-
Notifications
You must be signed in to change notification settings - Fork 51
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
Add Vivado XSim as a simulator #2363
base: main
Are you sure you want to change the base?
Conversation
@@ -329,7 +329,7 @@ fn emit_component<F: io::Write>( | |||
if let Some(check) = | |||
emit_guard_disjoint_check(dst, asgns, &pool, true) | |||
{ | |||
writeln!(f, "always_comb begin")?; | |||
writeln!(f, "always_ff @(posedge clk) begin")?; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you explain this change? On the face of it, it is turning combinational logic into sequential logic and I'm not sure why I would expect this to be correct?
[-help|-h] | ||
|
||
Description: xxxxxxxxxxxxxxxxxxx. | ||
xxxxxxxxxxxxxxxxxxx. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should probably provide a helpful description for this script here.
@@ -20,7 +20,7 @@ fn xilinx_setup(e) { | |||
); | |||
e.arg("pool", "console"); // Lets Ninja stream the tool output "live." | |||
|
|||
// Compile an `.xo` file to an `.xclbin` file, which is where the actual EDA work occurs. | |||
// Compile an `.xo` ile to an `.xclbin` file, which is where the actual EDA work occurs. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bug
Thanks for getting us started on this! Having support for XSim is definitely a big win and we should get this merged. Couple of questions for the code but broadly, could you explain why the changes are needed? |
Adds vivado xsim as a choice of simulator to fud2 because I want to use some encrypted IPs that can't be simulated by Verilator. XSim is slower than verilator by a lot so little reason for others to use it unless they want to use Xilinx floating point IP. It also behaves differently on some verilog constructs, so I had to make some fixes there (these fixes should also help calyx generated verilog work better on all time based (as opposed to cycle based like verilator) simulators).
Not really sure how to update the fud2 test cases but I won't do that until people agree with the other changes anyways.