Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix post-synthesis simulation in yosys #5

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

Forty-Bot
Copy link

As noted in #4, there are problems with synthesis in yosys. Whether or not this is a bug in yosys or not, these assignments are unnecessary, so we can remove them.

I have also included a small cleanup commit as well.

k is never used. Remove it.
Variable declaration assignments such as

	reg foo = 1;

are interpreted by some tools as

	reg foo;
	always @(*) foo = 1;

and not as

	reg foo;
	initial foo = 1;

This can cause simulation-synthesis mismatches, as the resultant value
of foo depends on how the tool is feeling.

Variable declaration assignments are used in four places. However, the
variables in question are subsequently assigned in their entirety,
Remove these assignments.

Closes: alexforencich#4
@Forty-Bot Forty-Bot changed the title Fix post synthesis Fix post synthesis simulation in yosys Jan 2, 2023
@Forty-Bot Forty-Bot changed the title Fix post synthesis simulation in yosys Fix post-synthesis simulation in yosys Jan 2, 2023
@alexforencich
Copy link
Owner

Alright, I think I just got a rather significant rewrite of the lfsr module finished up to remove the initial block in favor of constant functions. As part of this rewrite, those initializers were removed, and I think I have cleaned up any unused variables. Please test it out in yosys and let me know if it works any better than the old one.

@Forty-Bot
Copy link
Author

Forty-Bot commented Jan 16, 2023

For reference, I'm instantiating this like

	lfsr #(
		.LFSR_WIDTH(32),
		.LFSR_POLY(32'h04c11db7),
		.LFSR_CONFIG("GALOIS"),
		.REVERSE(1),
		.DATA_WIDTH(8),
		.STYLE("REDUCTION")
	) crc (
		.data_in(data),
		.state_in(crc_state),
		.state_out(crc_state_out)
	);

Your changes work, but now the module takes far longer to compile. It's also much noisier. E.g.

Warning: Encountered `translate_off' comment! Such legacy hot comments are supported by Yosys, but are not part of any formal language specification. Using a portable and standards-compliant construct such as `ifdef is recommended!
Warning: Replacing memory \output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:249, lib/verilog-lfsr/rtl/lfsr.v:221
Warning: Replacing memory \output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:248, lib/verilog-lfsr/rtl/lfsr.v:217
Warning: Replacing memory \lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:231, lib/verilog-lfsr/rtl/lfsr.v:214
Warning: Replacing memory \lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:230, lib/verilog-lfsr/rtl/lfsr.v:212
Warning: Replacing memory \output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:277, lib/verilog-lfsr/rtl/lfsr.v:221
Warning: Replacing memory \output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:276, lib/verilog-lfsr/rtl/lfsr.v:217
Warning: Replacing memory \lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:267, lib/verilog-lfsr/rtl/lfsr.v:214
Warning: Replacing memory \lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:266, lib/verilog-lfsr/rtl/lfsr.v:212

vs

Warning: Encountered `translate_off' comment! Such legacy hot comments are supported by Yosys, but are not part of any formal language specification. Using a portable and standards-compliant construct such as `ifdef is recommended!
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$180.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$180.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$180.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$180.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$179.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$179.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$179.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$179.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$178.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$178.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$178.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$178.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$177.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$177.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$177.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$177.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$176.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$176.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$176.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$176.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$175.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$175.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$175.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$175.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$174.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$174.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$174.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$174.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$173.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$173.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$173.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$173.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$172.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$172.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$172.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$172.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$171.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$171.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$171.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$171.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$170.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$170.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$170.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$170.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$169.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$169.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$169.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$169.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$168.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$168.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$168.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$168.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$167.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$167.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$167.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$167.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$166.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$166.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$166.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$166.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$165.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$165.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$165.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$165.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$164.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$164.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$164.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$164.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$163.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$163.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$163.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$163.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$162.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$162.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$162.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$162.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$161.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$161.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$161.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$161.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$160.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$160.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$160.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$160.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$159.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$159.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$159.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$159.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$158.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$158.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$158.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$158.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$157.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$157.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$157.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$157.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$156.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$156.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$156.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$156.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$155.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$155.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$155.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$155.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$154.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$154.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$154.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$154.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$153.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$153.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$153.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$153.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$152.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$152.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$152.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$152.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$151.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$151.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$151.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$151.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$150.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$150.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$150.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$150.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$149.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$149.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$149.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$149.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$148.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$148.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$148.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$148.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$147.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$147.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$147.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$147.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$146.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$146.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$146.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$146.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$145.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$145.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$145.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$145.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$144.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$144.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$144.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$144.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$143.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$143.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$143.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$143.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$142.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:257, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$142.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:256, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$142.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:239, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$142.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:238, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8953.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8953.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8953.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8953.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8952.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8952.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8952.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8952.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8951.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8951.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8951.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8951.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8950.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8950.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8950.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8950.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8949.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8949.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8949.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8949.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8948.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8948.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8948.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8948.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8947.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8947.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8947.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8947.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8946.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8946.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8946.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:375$8946.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8945.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8945.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8945.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8945.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8944.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8944.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8944.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8944.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8943.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8943.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8943.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8943.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8942.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8942.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8942.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8942.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8941.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8941.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8941.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8941.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8940.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8940.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8940.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8940.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8939.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8939.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8939.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8939.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8938.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8938.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8938.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8938.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8937.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8937.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8937.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8937.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8936.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8936.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8936.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8936.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8935.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8935.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8935.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8935.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8934.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8934.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8934.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8934.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8933.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8933.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8933.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8933.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8932.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8932.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8932.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8932.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8931.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8931.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8931.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8931.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8930.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8930.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8930.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8930.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8929.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8929.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8929.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8929.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8928.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8928.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8928.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8928.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8927.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8927.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8927.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8927.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8926.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8926.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8926.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8926.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8925.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8925.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8925.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8925.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8924.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8924.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8924.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8924.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8923.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8923.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8923.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8923.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8922.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8922.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8922.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8922.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8921.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8921.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8921.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8921.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8920.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8920.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8920.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8920.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8919.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8919.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8919.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8919.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8918.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8918.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8918.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8918.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8917.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8917.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8917.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8917.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8916.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8916.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8916.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8916.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8915.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8915.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8915.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8915.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8914.output_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:285, lib/verilog-lfsr/rtl/lfsr.v:229
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8914.output_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:284, lib/verilog-lfsr/rtl/lfsr.v:225
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8914.lfsr_mask_data with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:275, lib/verilog-lfsr/rtl/lfsr.v:222
Warning: Replacing memory \lfsr_mask$func$lib/verilog-lfsr/rtl/lfsr.v:371$8914.lfsr_mask_state with list of registers. See lib/verilog-lfsr/rtl/lfsr.v:274, lib/verilog-lfsr/rtl/lfsr.v:220

Most of the delay follows the above output, but it seems like there is some O(n) (or worse) algorithm and n has increased with this new style.

@alexforencich
Copy link
Owner

Well, to some extent taking longer is expected, since the LFSR computation is run once per output bit. Unfortunately, I don't think there is a way around that since you can't return a 2D array in Verilog, and I think packing the whole matrix into a single dimension would significantly limit the scalability since then you can run into wire size limits and what not.

It sounds like maybe yosys isn't handling the constant evaluation very well. Like it's building a netlist for the whole function, and then optimizing it all away, instead of simply evaluating the function and using the result.

@Forty-Bot
Copy link
Author

Well, to some extent taking longer is expected

For reference, I go from

real	0m3.318s
user	0m3.252s
sys	0m0.061s

To

real	0m26.285s
user	0m25.974s
sys	0m0.257s

It sounds like maybe yosys isn't handling the constant evaluation very well. Like it's building a netlist for the whole function, and then optimizing it all away, instead of simply evaluating the function and using the result.

That sounds about right.

Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$36098'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$35402'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$34706'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$34010'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$33314'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$32618'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$31922'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$31226'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$30530'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$29834'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$29138'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$28442'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$27746'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$27050'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$26354'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$25658'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$24962'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$24266'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$23570'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$22874'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$22178'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$21482'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$20786'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$20090'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$19394'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$18698'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$18002'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$17306'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$16610'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$15914'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$15218'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$14522'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$13826'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$13130'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$12434'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$11738'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$11042'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$10346'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$9650'.
Removing empty process `$paramod$db962ae99e4f92414a4da467590631b4c9f308af\lfsr.$proc$lib/verilog-lfsr/rtl/lfsr.v:0$8954'.

@alexforencich
Copy link
Owner

TBH, I don't care all that much about build times, mine are usually on the order of an hour or so, so an extra 30 seconds is irrelevant. The quality of the result is more important, as well as portability (tool and device support) in general. However, simulation time is an important concern, and the new LFSR is a bit slower in that respect (I think I timed the axis_xgmii_tx_64 module to 15 seconds with the new version, and 13 seconds with the old version). But I think that's a reasonable trade-off if the tool support is better - specifically, the old one doesn't work with synplify as it ignores the initial block completely; I think the new version should work but I do not have access to synplify to test it out. A rewrite in SV may improve the performance because it has better support for multidimensional arrays, but then it won't work in ISE.

@Forty-Bot
Copy link
Author

Forty-Bot commented Jan 16, 2023

TBH, I don't care all that much about build times

I care very much about build times. I regularly run post-synthesis tests on modules to make sure I don't have simulation/synthesis mismatches (and in fact that's how I caught this bug). A tenfold increase in compilation time is unacceptable for me.

The quality of the result is more important

In fact, this new version uses 6 additional LUTs: 76 vs 70 for "REDUCTION". In both cases, "LOOP" uses 80 LUTs. You can try this yourself with the following yosys commands:

read_verilog rtl/lfsr.v
chparam -set LFSR_WIDTH 32 -set LFSR_POLY 32'h04c11db7 -set LFSR_CONFIG "GALOIS" -set REVERSE 1 -set DATA_WIDTH 8 -set STYLE "REDUCTION" lfsr
synth_ice40

However, simulation time is an important concern, and the new LFSR is a bit slower in that respect

I see no major difference in simulation time with iverilog.

@alexforencich
Copy link
Owner

Well, if you can think of a better way to implement this functionality in a way that works in all of the major tools (particularly Vivado, ISE, Quartus, Quartus Pro, and Synplify) and in all of the major simulators, then I can certainly rework it again.

It's strange that it uses more LUTs in yosys, I didn't see a significant difference in the testing that I was doing with other tools. Unfortunately, the place and route process is quite "chaotic" and as a result a design with trivial changes often results in significant differences in resource utilization, placement, etc. Even different timing constraints can change the resource consumption. It's a bit unclear what is going on in this case, but I think there is a good chance that it has something to do with some of the optimization passes in yosys producing significantly different results based on some seemingly insignificant structural difference in the input. I will say that some tools seem to handle the "reduction" style better, and some tools seem to do better with the "loop" style, and it really isn't clear to me why there would be any difference at all - either way, it's just a bunch of XOR gates, and those can be reorganized in all sorts of ways without changing the functionality. I would think that the reduction style should be more clear to the tools what the intent is and produce a more compact result, but several tools seem to produce a smaller result with the loop style. Maybe the tools need more direction in terms of explicitly laying out some sort of cascade of stages, that seems to be the approach taken by these guys: https://github.com/QianfengClarkShen/Tbps_CRC . I just discovered that repo recently, there are probably some ideas there that can be incorporated here.

In terms of sim time, it looks like in your case you're using it to compute a CRC 8 bits at a time, which is much simpler than the axis_xgmii_tx_64 module I was testing in sim. That module has 8 LFSR instances, one each for 1 through 8 bytes. Initializing all of that takes a decent chunk of time, and definitely seems to be causing the simulation to take an extra second or two to start up. The initial rewrite I did was much slower, but some reworking and simplifying of the bit-reverse code sped it up quite a bit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants