migen
migen copied to clipboard
A Python toolbox for building complex digital hardware
The following migen snippet: ``` If((self.addr == 0x18a) and (self.joy_enabled == 1), ``` produces the following Verilog: ``` if ((addr_1 == 9'd394)) begin ```
Hello, I'm trying to import verilog code into migen design as below: First I created shifter.v: ```verilog module shifter( input sck_i, input sdi_i, output sdo_o, input csn_i, ); reg [7:0]...
Apparently, the proper way to constrain some CDCs (Both AsyncResetSynchronizer and transfer via GreyCounters) should use a max_delay constraint and not a false path. https://forums.xilinx.com/t5/Vivado-TCL-Community/How-to-set-timing-constraint-in-this-case/m-p/510771/highlight/true#M2049 How would one implement this?...
The following code, with x a n-bit signal: `Cat(x+1, 1)` should produce a n+2 bit value (carry from the addition, plus 1 added by Cat). The simulator implements this behavior,...
I have seen mismatching behavior between migen simulation and Vivado synthesized designes involving `Mux()` (the ternary/conditional operator) and signed `Signal()`. Verilog-2001: "If the lengths of expression2 and expression3 are different,...
Dual-port block RAMs in some FPGAs can have ports with different sizes. This feature cannot currently be used with Migen.
`.part()` as implemented corresponds to the semantics of Yosys `$shiftx` cell. It should use the `$shift` cell. See https://github.com/YosysHQ/yosys/pull/744 for an example of how to emit Verilog for that cell.
See https://github.com/m-labs/microscope/pull/1.
Migen: self.idx = Signal(max=depth, reset=-1) Generated Verilog: reg [3:0] sdram_bankmachine0_cmd_buffer_lookahead_idx = 4'd-1; The assigned value should be -4'd1 instead to be valid Verilog. Not my favourite thing about the language.