fix multidriver net issue in real build that worked fine in simulation

This commit is contained in:
2025-11-12 08:52:44 -06:00
parent 522bd9e8c9
commit ea0785e7d3
5 changed files with 126 additions and 94 deletions

View File

@@ -23,20 +23,20 @@
<key id="VT" for="node" attr.name="vert_type" attr.type="string"/>
<graph id="G" edgedefault="undirected" parse.nodeids="canonical" parse.edgeids="canonical" parse.order="nodesfirst">
<node id="n0">
<data key="VM">decimation_bd</data>
<data key="VT">BC</data>
</node>
<node id="n1">
<data key="VH">2</data>
<data key="VM">decimation_bd</data>
<data key="VT">VR</data>
</node>
<node id="n1">
<node id="n2">
<data key="TU">active</data>
<data key="VH">2</data>
<data key="VT">PM</data>
</node>
<node id="n2">
<data key="VM">decimation_bd</data>
<data key="VT">BC</data>
</node>
<edge id="e0" source="n2" target="n0"/>
<edge id="e1" source="n0" target="n1"/>
<edge id="e0" source="n0" target="n1"/>
<edge id="e1" source="n1" target="n2"/>
</graph>
</graphml>

View File

@@ -187,7 +187,7 @@ imum {}} value data_valid} enabled {attribs {resolve_type generated dependency d
"parameters": {
"POLARITY": [ { "value": "ACTIVE_LOW", "value_src": "constant", "value_permission": "bd", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
"INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ],
"TYPE": [ { "value": "INTERCONNECT", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ]
"TYPE": [ { "value": "INTERCONNECT", "value_permission": "bd", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ]
},
"port_maps": {
"RST": [ { "physical_name": "aresetn" } ]
@@ -206,7 +206,7 @@ imum {}} value data_valid} enabled {attribs {resolve_type generated dependency d
"ASSOCIATED_PORT": [ { "value": "", "value_permission": "bd", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
"ASSOCIATED_RESET": [ { "value": "aresetn", "value_permission": "bd", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ],
"INSERT_VIP": [ { "value": "0", "resolve_type": "user", "format": "long", "usage": "simulation.rtl", "is_ips_inferred": true, "is_static_object": false } ],
"ASSOCIATED_CLKEN": [ { "value": "aclken", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ]
"ASSOCIATED_CLKEN": [ { "value": "aclken", "value_permission": "bd", "resolve_type": "generated", "is_ips_inferred": true, "is_static_object": false } ]
},
"port_maps": {
"CLK": [ { "physical_name": "aclk" } ]

View File

@@ -945,47 +945,62 @@ module top #
assign jesd_axis_tx_cmd_tdata = 0;
assign jesd_axis_tx_cmd_tvalid = 1'b1;
waveform_gen waveform_gen_i (
.clk(jesd_core_clk),
wire [127:0] iq_out;
wire iq_out_valid;
gen_ofdm dut (
.clk(jesd_core_clk),
.reset(1'b0),
.ctrl_if(wf_gen_if),
.start_pulse(start_of_pulse),
.iq_out(iq_out),
.iq_out_valid(iq_out_valid)
);
.start_of_pulse(start_of_pulse),
.dac0_wf_bram_addr(dac0_wf_bram_addr),
.dac0_wf_bram_clk(dac0_wf_bram_clk),
.dac0_wf_bram_din(dac0_wf_bram_din),
.dac0_wf_bram_dout(dac0_wf_bram_dout),
.dac0_wf_bram_en(dac0_wf_bram_en),
.dac0_wf_bram_rst(dac0_wf_bram_rst),
.dac0_wf_bram_we(dac0_wf_bram_we),
.dac1_wf_bram_addr(dac1_wf_bram_addr),
.dac1_wf_bram_clk(dac1_wf_bram_clk),
.dac1_wf_bram_din(dac1_wf_bram_din),
.dac1_wf_bram_dout(dac1_wf_bram_dout),
.dac1_wf_bram_en(dac1_wf_bram_en),
.dac1_wf_bram_rst(dac1_wf_bram_rst),
.dac1_wf_bram_we(dac1_wf_bram_we),
.dac2_wf_bram_addr(dac2_wf_bram_addr),
.dac2_wf_bram_clk(dac2_wf_bram_clk),
.dac2_wf_bram_din(dac2_wf_bram_din),
.dac2_wf_bram_dout(dac2_wf_bram_dout),
.dac2_wf_bram_en(dac2_wf_bram_en),
.dac2_wf_bram_rst(dac2_wf_bram_rst),
.dac2_wf_bram_we(dac2_wf_bram_we),
.dac3_wf_bram_addr(dac3_wf_bram_addr),
.dac3_wf_bram_clk(dac3_wf_bram_clk),
.dac3_wf_bram_din(dac3_wf_bram_din),
.dac3_wf_bram_dout(dac3_wf_bram_dout),
.dac3_wf_bram_en(dac3_wf_bram_en),
.dac3_wf_bram_rst(dac3_wf_bram_rst),
.dac3_wf_bram_we(dac3_wf_bram_we),
assign jesd_axis_tx_tdata = {iq_out, iq_out, iq_out, iq_out};
.jesd_tx(jesd_axis_tx_tdata)
);
// waveform_gen waveform_gen_i (
// .clk(jesd_core_clk),
// .ctrl_if(wf_gen_if),
// .start_of_pulse(start_of_pulse),
// .dac0_wf_bram_addr(dac0_wf_bram_addr),
// .dac0_wf_bram_clk(dac0_wf_bram_clk),
// .dac0_wf_bram_din(dac0_wf_bram_din),
// .dac0_wf_bram_dout(dac0_wf_bram_dout),
// .dac0_wf_bram_en(dac0_wf_bram_en),
// .dac0_wf_bram_rst(dac0_wf_bram_rst),
// .dac0_wf_bram_we(dac0_wf_bram_we),
// .dac1_wf_bram_addr(dac1_wf_bram_addr),
// .dac1_wf_bram_clk(dac1_wf_bram_clk),
// .dac1_wf_bram_din(dac1_wf_bram_din),
// .dac1_wf_bram_dout(dac1_wf_bram_dout),
// .dac1_wf_bram_en(dac1_wf_bram_en),
// .dac1_wf_bram_rst(dac1_wf_bram_rst),
// .dac1_wf_bram_we(dac1_wf_bram_we),
// .dac2_wf_bram_addr(dac2_wf_bram_addr),
// .dac2_wf_bram_clk(dac2_wf_bram_clk),
// .dac2_wf_bram_din(dac2_wf_bram_din),
// .dac2_wf_bram_dout(dac2_wf_bram_dout),
// .dac2_wf_bram_en(dac2_wf_bram_en),
// .dac2_wf_bram_rst(dac2_wf_bram_rst),
// .dac2_wf_bram_we(dac2_wf_bram_we),
// .dac3_wf_bram_addr(dac3_wf_bram_addr),
// .dac3_wf_bram_clk(dac3_wf_bram_clk),
// .dac3_wf_bram_din(dac3_wf_bram_din),
// .dac3_wf_bram_dout(dac3_wf_bram_dout),
// .dac3_wf_bram_en(dac3_wf_bram_en),
// .dac3_wf_bram_rst(dac3_wf_bram_rst),
// .dac3_wf_bram_we(dac3_wf_bram_we),
// .jesd_tx(jesd_axis_tx_tdata)
// );
endmodule

View File

@@ -24,6 +24,7 @@ reg valid_q2;
reg [31:0] phase_q;
reg [31:0] frequency_q;
reg [127:0] iq_out_i;
wire [3:0] iq_out_valid_i;
always @ (posedge clk) begin
set_phase_q <= set_phase;
@@ -58,7 +59,7 @@ generate
.aclk(clk),
.s_axis_phase_tvalid(valid_q2),
.s_axis_phase_tdata(cordic_phase_in),
.m_axis_dout_tvalid(iq_out_valid),
.m_axis_dout_tvalid(iq_out_valid_i[i]),
.m_axis_dout_tdata(iq_out_i[i*32+31:i*32])
);
@@ -66,6 +67,7 @@ generate
endgenerate
assign iq_out = iq_out_i;
assign iq_out_valid = &iq_out_valid_i;
endmodule
`resetall