Skip to content

Commit

Permalink
verilog: get the simulator to run the combinatorial process at the be…
Browse files Browse the repository at this point in the history
…ginning
  • Loading branch information
Sebastien Bourdeauducq committed Dec 17, 2011
1 parent ec47394 commit 6f8a6db
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions migen/fhdl/verilog.py
Expand Up @@ -155,8 +155,23 @@ def Convert(f, ios=set(), name="top", clk_signal=None, rst_signal=None, ns=None)
r += "\n" r += "\n"


if f.comb.l: if f.comb.l:
# Generate a dummy event to get the simulator
# to run the combinatorial process once at the beginning.
syn_off = "// synthesis translate off\n"
syn_on = "// synthesis translate on\n"
dummy_s = Signal(name="dummy_s")
dummy_d = Signal(name="dummy_d")
r += syn_off
r += "reg " + _printsig(ns, dummy_s) + ";\n"
r += "reg " + _printsig(ns, dummy_d) + ";\n"
r += "initial " + ns.get_name(dummy_s) + " <= 1'b0;\n"
r += syn_on + "\n"

r += "always @(*) begin\n" r += "always @(*) begin\n"
r += _printnode(ns, 1, f.comb) r += _printnode(ns, 1, f.comb)
r += syn_off
r += "\t" + ns.get_name(dummy_d) + " <= " + ns.get_name(dummy_s) + ";\n"
r += syn_on
r += "end\n\n" r += "end\n\n"
if f.sync.l: if f.sync.l:
r += "always @(posedge " + ns.get_name(clk_signal) + ") begin\n" r += "always @(posedge " + ns.get_name(clk_signal) + ") begin\n"
Expand Down

0 comments on commit 6f8a6db

Please sign in to comment.