Function: verilog-sk-state-machine
verilog-sk-state-machine is an interactive and byte-compiled function
defined in verilog-mode.el.gz.
Signature
(verilog-sk-state-machine &optional STR ARG)
Documentation
Insert a state machine definition.
This is a skeleton command (see skeleton-insert).
Normally the skeleton text is inserted at point, with nothing "inside".
If there is a highlighted region, the skeleton text is wrapped
around the region text.
A prefix argument ARG says to wrap the skeleton around the next ARG words. A prefix argument of -1 says to wrap around region, even if not highlighted. A prefix argument of zero says to wrap around zero words---that is, nothing. This is a way of overriding the use of a highlighted region.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/verilog-mode.el.gz
(define-skeleton verilog-sk-state-machine
"Insert a state machine definition."
"Name of state variable: "
'(setq input "state")
> "// State registers for " str | -23 \n
'(setq verilog-sk-state str)
> "reg [" '(verilog-sk-prompt-width) | -1 verilog-sk-state ", next_" verilog-sk-state ?\; \n
'(setq input nil)
> \n
> "// State FF for " verilog-sk-state \n
> "always @ ( " (read-string "clock:" "posedge clk") " or " (verilog-sk-prompt-reset) " ) begin" \n
> "if ( " verilog-sk-reset " ) " verilog-sk-state " = 0; else" \n
> verilog-sk-state " = next_" verilog-sk-state ?\; \n
> (- verilog-indent-level-behavioral) "end" (progn (electric-verilog-terminate-line) nil)
> \n
> "// Next State Logic for " verilog-sk-state \n
> "always @ ( /*AUTOSENSE*/ ) begin\n"
> "case (" '(verilog-sk-prompt-state-selector) ") " \n
> ("case selector: " str ": begin" \n > "next_" verilog-sk-state " = " _ ";" \n > (- verilog-indent-level-behavioral) "end" \n )
resume: > (- verilog-case-indent) "endcase" (progn (electric-verilog-terminate-line) nil)
> (- verilog-indent-level-behavioral) "end" (progn (electric-verilog-terminate-line) nil))