检查我设计的RTL代码是否被综合

问题描述 投票:0回答:0
  1. 根据结果,synthis的verilog代码是否可行? (你是如何确定 synthis 是否可行的?)

  2. 想看可以综合的RTL代码,但是tcl代码有没有多余的部分?

  3. 如果你正在写RTL代码是否可以综合的报告,应该展示哪一部分?

  4. 我正在编写 i2s 代码,有没有我需要添加的功能?

i2s_top.v

module i2s_top #(
    parameter AUDIO_DW = 16
)(
    input i_tx_sclk,
    input i_rst_n,
    input [AUDIO_DW-1:0] i_tx_prescaler,
    input [AUDIO_DW-1:0] i_tx_left_chan,
    input [AUDIO_DW-1:0] i_tx_right_chan,

    output [AUDIO_DW-1:0] o_rx_left_chan,
    output [AUDIO_DW-1:0] o_rx_right_chan
);

wire w_sclk;
wire w_lrclk;
wire w_sdata;

i2s_tx #(
    .AUDIO_DW(AUDIO_DW)
) i2s_tx (
    .i_tx_sclk(i_tx_sclk),
    .i_tx_rst_n(i_rst_n),
    .i_tx_prescaler(i_tx_prescaler),
    
    .o_tx_sclk(w_sclk),
    .o_tx_lrclk(w_lrclk),
    .o_tx_sdata(w_sdata),
    
    .i_tx_left_chan(i_tx_left_chan),
    .i_tx_right_chan(i_tx_right_chan)
);

i2s_rx #(
    .AUDIO_DW(AUDIO_DW)
) i2s_rx (
    .i_rx_sclk(w_sclk),
    .i_rx_rst_n(i_rst_n),
    .i_rx_lrclk(w_lrclk),
    .i_rx_sdata(w_sdata),
    .o_rx_left_chan(o_rx_left_chan),
    .o_rx_right_chan(o_rx_right_chan)
);

endmodule

i2s_tx.v

module i2s_tx #(
    parameter AUDIO_DW = 16
)(
    input i_tx_sclk,
    input [AUDIO_DW-1:0] i_tx_prescaler,
    input i_tx_rst_n,
    
    output wire o_tx_sclk,
    output reg o_tx_lrclk = 0,
    output reg o_tx_sdata = 0,

    input [AUDIO_DW-1:0] i_tx_left_chan,
    input [AUDIO_DW-1:0] i_tx_right_chan
);

reg [AUDIO_DW-1:0] tx_bit_cnt;
reg [AUDIO_DW-1:0] tx_left;
reg [AUDIO_DW-1:0] tx_right;

assign o_tx_sclk = i_tx_sclk;

always @(negedge i_tx_sclk or negedge i_tx_rst_n) begin
    if (!i_tx_rst_n) begin
        tx_bit_cnt <= 1;
        tx_left <= 0;
        tx_right <= 0;
    end else begin
        if (tx_bit_cnt >= i_tx_prescaler) begin
            tx_bit_cnt <= 1;
        end else begin
            tx_bit_cnt <= tx_bit_cnt + 1;
        end
        
        if (tx_bit_cnt == i_tx_prescaler && o_tx_lrclk) begin
            tx_left <= i_tx_left_chan;
            tx_right <= i_tx_right_chan;
        end
                
        o_tx_lrclk <= (tx_bit_cnt == i_tx_prescaler) ? ~o_tx_lrclk : o_tx_lrclk;
    
        o_tx_sdata <= o_tx_lrclk ? tx_right[AUDIO_DW - tx_bit_cnt] : tx_left[AUDIO_DW - tx_bit_cnt];
    end
end

endmodule

i2s_rx.v

module i2s_rx #(
    parameter AUDIO_DW = 16
)(
    input i_rx_sclk,
    input i_rx_rst_n,
    input i_rx_lrclk,
    input i_rx_sdata,

    output reg [AUDIO_DW-1:0] o_rx_left_chan = 0,
    output reg [AUDIO_DW-1:0] o_rx_right_chan = 0
);

reg [AUDIO_DW-1:0] rx_left = 0;
reg [AUDIO_DW-1:0] rx_right = 0;
reg rx_lrclk_r = 0;
wire rx_lrclk_nedge;

assign rx_lrclk_nedge = !i_rx_lrclk & rx_lrclk_r;

always @(posedge i_rx_sclk or negedge i_rx_rst_n)
    if (!i_rx_rst_n) begin
        rx_lrclk_r <= 0;
        rx_left <= 0;
    end else if (rx_lrclk_r) begin
        rx_right <= {rx_right[AUDIO_DW-2:0], i_rx_sdata};
    end else 
        rx_left <= {rx_left[AUDIO_DW-2:0], i_rx_sdata};

always @(posedge i_rx_sclk or negedge i_rx_rst_n)
    if (!i_rx_rst_n) begin
        o_rx_left_chan <= 0;
        o_rx_right_chan <= 0;
    end else if (rx_lrclk_nedge) begin
        o_rx_left_chan <= rx_left;
        o_rx_right_chan <= {rx_right[AUDIO_DW-2:0], i_rx_sdata};
    end

endmodule

i2s.v(网表)


module i2s_tx_AUDIO_DW16_DW01_inc_0 ( A, SUM );
  input [15:0] A;
  output [15:0] SUM;

  wire   [15:2] carry;

  ah01d0 U1_1_14 ( .A(A[14]), .B(carry[14]), .CO(carry[15]), .S(SUM[14]) );
  ah01d0 U1_1_13 ( .A(A[13]), .B(carry[13]), .CO(carry[14]), .S(SUM[13]) );
  ah01d0 U1_1_12 ( .A(A[12]), .B(carry[12]), .CO(carry[13]), .S(SUM[12]) );
  ah01d0 U1_1_11 ( .A(A[11]), .B(carry[11]), .CO(carry[12]), .S(SUM[11]) );
  ah01d0 U1_1_10 ( .A(A[10]), .B(carry[10]), .CO(carry[11]), .S(SUM[10]) );
  ah01d0 U1_1_9 ( .A(A[9]), .B(carry[9]), .CO(carry[10]), .S(SUM[9]) );
  ah01d0 U1_1_8 ( .A(A[8]), .B(carry[8]), .CO(carry[9]), .S(SUM[8]) );
  ah01d0 U1_1_7 ( .A(A[7]), .B(carry[7]), .CO(carry[8]), .S(SUM[7]) );
  ah01d0 U1_1_6 ( .A(A[6]), .B(carry[6]), .CO(carry[7]), .S(SUM[6]) );
  ah01d0 U1_1_5 ( .A(A[5]), .B(carry[5]), .CO(carry[6]), .S(SUM[5]) );
  ah01d0 U1_1_4 ( .A(A[4]), .B(carry[4]), .CO(carry[5]), .S(SUM[4]) );
  ah01d0 U1_1_3 ( .A(A[3]), .B(carry[3]), .CO(carry[4]), .S(SUM[3]) );
  ah01d0 U1_1_2 ( .A(A[2]), .B(carry[2]), .CO(carry[3]), .S(SUM[2]) );
  ah01d0 U1_1_1 ( .A(A[1]), .B(A[0]), .CO(carry[2]), .S(SUM[1]) );
  inv0d1 U1 ( .I(A[0]), .ZN(SUM[0]) );
  xr02d1 U2 ( .A1(carry[15]), .A2(A[15]), .Z(SUM[15]) );
endmodule


module i2s_tx_AUDIO_DW16 ( i_tx_sclk, i_tx_prescaler, i_tx_rst_n, o_tx_sclk, 
        o_tx_lrclk, o_tx_sdata, i_tx_left_chan, i_tx_right_chan );
  input [15:0] i_tx_prescaler;
  input [15:0] i_tx_left_chan;
  input [15:0] i_tx_right_chan;
  input i_tx_sclk, i_tx_rst_n;
  output o_tx_sclk, o_tx_lrclk, o_tx_sdata;
  wire   i_tx_sclk, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27,
         N28, N29, N30, N31, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57,
         N58, N59, N60, N61, N62, N63, n18, n19, n21, n23, n1, n2, n3, n4, n5,
         n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16, n17, n24, n25, n26,
         n27, n28, n29, n30, n31, n32, n33, n34, n35, n36, n37, n38, n39, n40,
         n41, n42, n43, n44, n45, n46, n47, n48, n49, n50, n51, n52, n53, n54,
         n55, n56, n57, n58, n59, n60, n61, n62, n63, n64, n65, n66, n67, n68,
         n69, n70, n71, n72, n73, n74, n75, n76, n77, n78, n79, n80;
  wire   [15:0] tx_bit_cnt;
  wire   [15:0] tx_right;
  wire   [15:0] tx_left;
  assign o_tx_sclk = i_tx_sclk;

  dfpfb1 \tx_bit_cnt_reg[0]  ( .D(N16), .CPN(i_tx_sclk), .SDN(i_tx_rst_n), 
        .QN(n18) );
  dfcfq1 \tx_bit_cnt_reg[1]  ( .D(N17), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(
        tx_bit_cnt[1]) );
  dfcfq1 \tx_bit_cnt_reg[2]  ( .D(N18), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(
        tx_bit_cnt[2]) );
  dfcfq1 \tx_bit_cnt_reg[3]  ( .D(N19), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(
        tx_bit_cnt[3]) );
  dfcfq1 \tx_bit_cnt_reg[4]  ( .D(N20), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(
        tx_bit_cnt[4]) );
  dfcfq1 \tx_bit_cnt_reg[5]  ( .D(N21), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(
        tx_bit_cnt[5]) );
  dfcfq1 \tx_bit_cnt_reg[6]  ( .D(N22), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(
        tx_bit_cnt[6]) );
  dfcfq1 \tx_bit_cnt_reg[7]  ( .D(N23), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(
        tx_bit_cnt[7]) );
  dfcfq1 \tx_bit_cnt_reg[8]  ( .D(N24), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(
        tx_bit_cnt[8]) );
  dfcfq1 \tx_bit_cnt_reg[9]  ( .D(N25), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(
        tx_bit_cnt[9]) );
  dfcfq1 \tx_bit_cnt_reg[10]  ( .D(N26), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), 
        .Q(tx_bit_cnt[10]) );
  dfcfq1 \tx_bit_cnt_reg[11]  ( .D(N27), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), 
        .Q(tx_bit_cnt[11]) );
  dfcfq1 \tx_bit_cnt_reg[12]  ( .D(N28), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), 
        .Q(tx_bit_cnt[12]) );
  dfcfq1 \tx_bit_cnt_reg[13]  ( .D(N29), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), 
        .Q(tx_bit_cnt[13]) );
  dfcfq1 \tx_bit_cnt_reg[14]  ( .D(N30), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), 
        .Q(tx_bit_cnt[14]) );
  dfcfq1 \tx_bit_cnt_reg[15]  ( .D(N31), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), 
        .Q(tx_bit_cnt[15]) );
  dfcfq1 o_tx_lrclk_reg ( .D(n23), .CPN(i_tx_sclk), .CDN(1'b1), .Q(o_tx_lrclk)
         );
  dfcfq1 o_tx_sdata_reg ( .D(n21), .CPN(i_tx_sclk), .CDN(1'b1), .Q(o_tx_sdata)
         );
  i2s_tx_AUDIO_DW16_DW01_inc_0 add_31_aco ( .A({N63, N62, N61, N60, N59, N58, 
        N57, N56, N55, N54, N53, N52, N51, N50, N49, N48}), .SUM({N31, N30, 
        N29, N28, N27, N26, N25, N24, N23, N22, N21, N20, N19, N18, N17, N16})
         );
  decfq1 \tx_right_reg[0]  ( .D(i_tx_right_chan[0]), .ENN(n19), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(tx_right[0]) );
  decfq1 \tx_left_reg[15]  ( .D(i_tx_left_chan[15]), .ENN(n19), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(tx_left[15]) );
  decfq1 \tx_left_reg[14]  ( .D(i_tx_left_chan[14]), .ENN(n19), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(tx_left[14]) );
  decfq1 \tx_left_reg[13]  ( .D(i_tx_left_chan[13]), .ENN(n19), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(tx_left[13]) );
  decfq1 \tx_left_reg[12]  ( .D(i_tx_left_chan[12]), .ENN(n19), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(tx_left[12]) );
  decfq1 \tx_left_reg[11]  ( .D(i_tx_left_chan[11]), .ENN(n19), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(tx_left[11]) );
  decfq1 \tx_left_reg[10]  ( .D(i_tx_left_chan[10]), .ENN(n19), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(tx_left[10]) );
  decfq1 \tx_left_reg[9]  ( .D(i_tx_left_chan[9]), .ENN(n19), .CPN(i_tx_sclk), 
        .CDN(i_tx_rst_n), .Q(tx_left[9]) );
  decfq1 \tx_left_reg[8]  ( .D(i_tx_left_chan[8]), .ENN(n19), .CPN(i_tx_sclk), 
        .CDN(i_tx_rst_n), .Q(tx_left[8]) );
  decfq1 \tx_left_reg[7]  ( .D(i_tx_left_chan[7]), .ENN(n19), .CPN(i_tx_sclk), 
        .CDN(i_tx_rst_n), .Q(tx_left[7]) );
  decfq1 \tx_left_reg[6]  ( .D(i_tx_left_chan[6]), .ENN(n19), .CPN(i_tx_sclk), 
        .CDN(i_tx_rst_n), .Q(tx_left[6]) );
  decfq1 \tx_left_reg[5]  ( .D(i_tx_left_chan[5]), .ENN(n19), .CPN(i_tx_sclk), 
        .CDN(i_tx_rst_n), .Q(tx_left[5]) );
  decfq1 \tx_left_reg[4]  ( .D(i_tx_left_chan[4]), .ENN(n19), .CPN(i_tx_sclk), 
        .CDN(i_tx_rst_n), .Q(tx_left[4]) );
  decfq1 \tx_left_reg[3]  ( .D(i_tx_left_chan[3]), .ENN(n19), .CPN(i_tx_sclk), 
        .CDN(i_tx_rst_n), .Q(tx_left[3]) );
  decfq1 \tx_left_reg[2]  ( .D(i_tx_left_chan[2]), .ENN(n19), .CPN(i_tx_sclk), 
        .CDN(i_tx_rst_n), .Q(tx_left[2]) );
  decfq1 \tx_left_reg[1]  ( .D(i_tx_left_chan[1]), .ENN(n19), .CPN(i_tx_sclk), 
        .CDN(i_tx_rst_n), .Q(tx_left[1]) );
  decfq1 \tx_left_reg[0]  ( .D(i_tx_left_chan[0]), .ENN(n19), .CPN(i_tx_sclk), 
        .CDN(i_tx_rst_n), .Q(tx_left[0]) );
  decfq1 \tx_right_reg[15]  ( .D(i_tx_right_chan[15]), .ENN(n19), .CPN(
        i_tx_sclk), .CDN(i_tx_rst_n), .Q(tx_right[15]) );
  decfq1 \tx_right_reg[14]  ( .D(i_tx_right_chan[14]), .ENN(n19), .CPN(
        i_tx_sclk), .CDN(i_tx_rst_n), .Q(tx_right[14]) );
  decfq1 \tx_right_reg[13]  ( .D(i_tx_right_chan[13]), .ENN(n19), .CPN(
        i_tx_sclk), .CDN(i_tx_rst_n), .Q(tx_right[13]) );
  decfq1 \tx_right_reg[12]  ( .D(i_tx_right_chan[12]), .ENN(n19), .CPN(
        i_tx_sclk), .CDN(i_tx_rst_n), .Q(tx_right[12]) );
  decfq1 \tx_right_reg[11]  ( .D(i_tx_right_chan[11]), .ENN(n19), .CPN(
        i_tx_sclk), .CDN(i_tx_rst_n), .Q(tx_right[11]) );
  decfq1 \tx_right_reg[10]  ( .D(i_tx_right_chan[10]), .ENN(n19), .CPN(
        i_tx_sclk), .CDN(i_tx_rst_n), .Q(tx_right[10]) );
  decfq1 \tx_right_reg[9]  ( .D(i_tx_right_chan[9]), .ENN(n19), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(tx_right[9]) );
  decfq1 \tx_right_reg[8]  ( .D(i_tx_right_chan[8]), .ENN(n19), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(tx_right[8]) );
  decfq1 \tx_right_reg[7]  ( .D(i_tx_right_chan[7]), .ENN(n19), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(tx_right[7]) );
  decfq1 \tx_right_reg[6]  ( .D(i_tx_right_chan[6]), .ENN(n19), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(tx_right[6]) );
  decfq1 \tx_right_reg[5]  ( .D(i_tx_right_chan[5]), .ENN(n19), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(tx_right[5]) );
  decfq1 \tx_right_reg[4]  ( .D(i_tx_right_chan[4]), .ENN(n19), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(tx_right[4]) );
  decfq1 \tx_right_reg[3]  ( .D(i_tx_right_chan[3]), .ENN(n19), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(tx_right[3]) );
  decfq1 \tx_right_reg[2]  ( .D(i_tx_right_chan[2]), .ENN(n19), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(tx_right[2]) );
  decfq1 \tx_right_reg[1]  ( .D(i_tx_right_chan[1]), .ENN(n19), .CPN(i_tx_sclk), .CDN(i_tx_rst_n), .Q(tx_right[1]) );
  nd02d1 U3 ( .A1(o_tx_lrclk), .A2(n2), .ZN(n19) );
  xr02d1 U4 ( .A1(o_tx_lrclk), .A2(n1), .Z(n23) );
  an02d0 U5 ( .A1(n2), .A2(i_tx_rst_n), .Z(n1) );
  mx02d0 U6 ( .I0(o_tx_sdata), .I1(n3), .S(i_tx_rst_n), .Z(n21) );
  inv0d0 U7 ( .I(n4), .ZN(n3) );
  mx08d1 U8 ( .I0(n5), .I1(n6), .I2(n7), .I3(n8), .I4(n9), .I5(n10), .I6(n11), 
        .I7(n12), .S0(o_tx_lrclk), .S1(n13), .S2(n18), .Z(n4) );
  xn02d1 U9 ( .A1(n14), .A2(n15), .ZN(n13) );
  nr02d0 U10 ( .A1(tx_bit_cnt[2]), .A2(n16), .ZN(n15) );
  aoi2222d1 U11 ( .A1(tx_right[0]), .A2(n17), .B1(tx_right[4]), .B2(n24), .C1(
        tx_right[2]), .C2(n25), .D1(tx_right[6]), .D2(n26), .ZN(n12) );
  aoi2222d1 U12 ( .A1(tx_left[0]), .A2(n17), .B1(tx_left[4]), .B2(n24), .C1(
        tx_left[2]), .C2(n25), .D1(tx_left[6]), .D2(n26), .ZN(n11) );
  aoi2222d1 U13 ( .A1(tx_right[8]), .A2(n17), .B1(tx_right[12]), .B2(n24), 
        .C1(tx_right[10]), .C2(n25), .D1(tx_right[14]), .D2(n26), .ZN(n10) );
  aoi2222d1 U14 ( .A1(tx_left[8]), .A2(n17), .B1(tx_left[12]), .B2(n24), .C1(
        tx_left[10]), .C2(n25), .D1(tx_left[14]), .D2(n26), .ZN(n9) );
  aoi2222d1 U15 ( .A1(tx_right[1]), .A2(n17), .B1(tx_right[5]), .B2(n24), .C1(
        tx_right[3]), .C2(n25), .D1(tx_right[7]), .D2(n26), .ZN(n8) );
  aoi2222d1 U16 ( .A1(tx_left[1]), .A2(n17), .B1(tx_left[5]), .B2(n24), .C1(
        tx_left[3]), .C2(n25), .D1(tx_left[7]), .D2(n26), .ZN(n7) );
  aoi2222d1 U17 ( .A1(tx_right[9]), .A2(n17), .B1(tx_right[13]), .B2(n24), 
        .C1(tx_right[11]), .C2(n25), .D1(tx_right[15]), .D2(n26), .ZN(n6) );
  aoi2222d1 U18 ( .A1(tx_left[9]), .A2(n17), .B1(tx_left[13]), .B2(n24), .C1(
        tx_left[11]), .C2(n25), .D1(tx_left[15]), .D2(n26), .ZN(n5) );
  nr02d0 U21 ( .A1(n27), .A2(n28), .ZN(n26) );
  nr02d0 U22 ( .A1(n27), .A2(n29), .ZN(n25) );
  nr02d0 U23 ( .A1(n28), .A2(n30), .ZN(n24) );
  nr02d0 U24 ( .A1(n29), .A2(n30), .ZN(n17) );
  inv0d0 U25 ( .I(n27), .ZN(n30) );
  xr02d1 U26 ( .A1(tx_bit_cnt[1]), .A2(n18), .Z(n27) );
  inv0d0 U27 ( .I(n28), .ZN(n29) );
  xn02d1 U28 ( .A1(n31), .A2(n32), .ZN(n28) );
  an04d0 U29 ( .A1(n33), .A2(n34), .A3(n35), .A4(n36), .Z(n2) );
  nr04d0 U30 ( .A1(n37), .A2(n38), .A3(n39), .A4(n40), .ZN(n36) );
  nr04d0 U31 ( .A1(n41), .A2(n42), .A3(n43), .A4(n44), .ZN(n35) );
  an04d0 U32 ( .A1(n45), .A2(n46), .A3(n47), .A4(n48), .Z(n34) );
  ora211d1 U33 ( .C1(i_tx_prescaler[1]), .C2(n49), .A(n50), .B(n51), .Z(n33)
         );
  aoim22d1 U34 ( .A1(tx_bit_cnt[15]), .A2(n52), .B1(n18), .B2(
        i_tx_prescaler[0]), .Z(n51) );
  inv0d0 U35 ( .I(i_tx_prescaler[15]), .ZN(n52) );
  an02d0 U36 ( .A1(tx_bit_cnt[15]), .A2(n53), .Z(N63) );
  nr02d0 U37 ( .A1(n54), .A2(n48), .ZN(N62) );
  an02d0 U38 ( .A1(tx_bit_cnt[13]), .A2(n53), .Z(N61) );
  an02d0 U39 ( .A1(tx_bit_cnt[12]), .A2(n53), .Z(N60) );
  nr02d0 U40 ( .A1(n55), .A2(n48), .ZN(N59) );
  nr02d0 U41 ( .A1(n56), .A2(n48), .ZN(N58) );
  an02d0 U42 ( .A1(tx_bit_cnt[9]), .A2(n53), .Z(N57) );
  nr02d0 U43 ( .A1(n57), .A2(n48), .ZN(N56) );
  nr02d0 U44 ( .A1(n58), .A2(n48), .ZN(N55) );
  nr02d0 U45 ( .A1(n59), .A2(n48), .ZN(N54) );
  an02d0 U46 ( .A1(tx_bit_cnt[5]), .A2(n53), .Z(N53) );
  nr02d0 U47 ( .A1(n60), .A2(n48), .ZN(N52) );
  nr02d0 U48 ( .A1(n14), .A2(n48), .ZN(N51) );
  nr02d0 U49 ( .A1(n32), .A2(n48), .ZN(N50) );
  nr02d0 U50 ( .A1(n49), .A2(n48), .ZN(N49) );
  nr02d0 U51 ( .A1(n18), .A2(n48), .ZN(N48) );
  inv0d0 U52 ( .I(n53), .ZN(n48) );
  aoim22d1 U53 ( .A1(tx_bit_cnt[15]), .A2(n61), .B1(n62), .B2(
        i_tx_prescaler[15]), .Z(n53) );
  nd02d0 U54 ( .A1(i_tx_prescaler[15]), .A2(n62), .ZN(n61) );
  aor22d1 U55 ( .A1(n50), .A2(n63), .B1(i_tx_prescaler[14]), .B2(n54), .Z(n62)
         );
  oai322d1 U56 ( .C1(n64), .C2(n44), .C3(n65), .A1(tx_bit_cnt[12]), .A2(n66), 
        .B1(tx_bit_cnt[13]), .B2(n67), .ZN(n63) );
  inv0d0 U57 ( .I(n45), .ZN(n65) );
  nd02d0 U58 ( .A1(tx_bit_cnt[12]), .A2(n66), .ZN(n45) );
  inv0d0 U59 ( .I(i_tx_prescaler[12]), .ZN(n66) );
  nr02d0 U60 ( .A1(n55), .A2(i_tx_prescaler[11]), .ZN(n44) );
  aoi322d1 U61 ( .C1(n46), .C2(n68), .C3(n69), .A1(i_tx_prescaler[11]), .A2(
        n55), .B1(i_tx_prescaler[10]), .B2(n56), .ZN(n64) );
  inv0d0 U62 ( .I(tx_bit_cnt[11]), .ZN(n55) );
  oai322d1 U63 ( .C1(n70), .C2(n42), .C3(n43), .A1(tx_bit_cnt[8]), .A2(n71), 
        .B1(tx_bit_cnt[9]), .B2(n72), .ZN(n69) );
  inv0d0 U64 ( .I(i_tx_prescaler[8]), .ZN(n71) );
  nr02d0 U65 ( .A1(n57), .A2(i_tx_prescaler[8]), .ZN(n43) );
  inv0d0 U66 ( .I(tx_bit_cnt[8]), .ZN(n57) );
  nr02d0 U67 ( .A1(n58), .A2(i_tx_prescaler[7]), .ZN(n42) );
  aoi322d1 U68 ( .C1(n47), .C2(n73), .C3(n74), .A1(i_tx_prescaler[7]), .A2(n58), .B1(i_tx_prescaler[6]), .B2(n59), .ZN(n70) );
  inv0d0 U69 ( .I(tx_bit_cnt[7]), .ZN(n58) );
  oai322d1 U70 ( .C1(n75), .C2(n40), .C3(n41), .A1(tx_bit_cnt[4]), .A2(n76), 
        .B1(tx_bit_cnt[5]), .B2(n77), .ZN(n74) );
  inv0d0 U71 ( .I(i_tx_prescaler[4]), .ZN(n76) );
  nr02d0 U72 ( .A1(n60), .A2(i_tx_prescaler[4]), .ZN(n41) );
  inv0d0 U73 ( .I(tx_bit_cnt[4]), .ZN(n60) );
  nr02d0 U74 ( .A1(n14), .A2(i_tx_prescaler[3]), .ZN(n40) );
  aoi322d1 U75 ( .C1(n78), .C2(n79), .C3(n80), .A1(i_tx_prescaler[3]), .A2(n14), .B1(i_tx_prescaler[2]), .B2(n32), .ZN(n75) );
  inv0d0 U76 ( .I(tx_bit_cnt[3]), .ZN(n14) );
  aor21d1 U77 ( .B1(n31), .B2(i_tx_prescaler[0]), .A(i_tx_prescaler[1]), .Z(
        n80) );
  inv0d0 U78 ( .I(n16), .ZN(n31) );
  nd02d0 U79 ( .A1(n18), .A2(n49), .ZN(n16) );
  inv0d0 U80 ( .I(n39), .ZN(n79) );
  nr02d0 U81 ( .A1(n32), .A2(i_tx_prescaler[2]), .ZN(n39) );
  inv0d0 U82 ( .I(tx_bit_cnt[2]), .ZN(n32) );
  aor21d1 U83 ( .B1(n18), .B2(i_tx_prescaler[0]), .A(n49), .Z(n78) );
  inv0d0 U84 ( .I(tx_bit_cnt[1]), .ZN(n49) );
  inv0d0 U85 ( .I(n38), .ZN(n73) );
  nr02d0 U86 ( .A1(n59), .A2(i_tx_prescaler[6]), .ZN(n38) );
  inv0d0 U87 ( .I(tx_bit_cnt[6]), .ZN(n59) );
  nd02d0 U88 ( .A1(tx_bit_cnt[5]), .A2(n77), .ZN(n47) );
  inv0d0 U89 ( .I(i_tx_prescaler[5]), .ZN(n77) );
  inv0d0 U90 ( .I(n37), .ZN(n68) );
  nr02d0 U91 ( .A1(n56), .A2(i_tx_prescaler[10]), .ZN(n37) );
  inv0d0 U92 ( .I(tx_bit_cnt[10]), .ZN(n56) );
  nd02d0 U93 ( .A1(tx_bit_cnt[9]), .A2(n72), .ZN(n46) );
  inv0d0 U94 ( .I(i_tx_prescaler[9]), .ZN(n72) );
  aoim22d1 U95 ( .A1(tx_bit_cnt[13]), .A2(n67), .B1(n54), .B2(
        i_tx_prescaler[14]), .Z(n50) );
  inv0d0 U96 ( .I(tx_bit_cnt[14]), .ZN(n54) );
  inv0d0 U97 ( .I(i_tx_prescaler[13]), .ZN(n67) );
endmodule


module i2s_rx_AUDIO_DW16 ( i_rx_sclk, i_rx_rst_n, i_rx_lrclk, i_rx_sdata, 
        o_rx_left_chan, o_rx_right_chan );
  output [15:0] o_rx_left_chan;
  output [15:0] o_rx_right_chan;
  input i_rx_sclk, i_rx_rst_n, i_rx_lrclk, i_rx_sdata;

  assign o_rx_left_chan[15] = 1'b0;
  assign o_rx_left_chan[14] = 1'b0;
  assign o_rx_left_chan[13] = 1'b0;
  assign o_rx_left_chan[12] = 1'b0;
  assign o_rx_left_chan[11] = 1'b0;
  assign o_rx_left_chan[10] = 1'b0;
  assign o_rx_left_chan[9] = 1'b0;
  assign o_rx_left_chan[8] = 1'b0;
  assign o_rx_left_chan[7] = 1'b0;
  assign o_rx_left_chan[6] = 1'b0;
  assign o_rx_left_chan[5] = 1'b0;
  assign o_rx_left_chan[4] = 1'b0;
  assign o_rx_left_chan[3] = 1'b0;
  assign o_rx_left_chan[2] = 1'b0;
  assign o_rx_left_chan[1] = 1'b0;
  assign o_rx_left_chan[0] = 1'b0;
  assign o_rx_right_chan[15] = 1'b0;
  assign o_rx_right_chan[14] = 1'b0;
  assign o_rx_right_chan[13] = 1'b0;
  assign o_rx_right_chan[12] = 1'b0;
  assign o_rx_right_chan[11] = 1'b0;
  assign o_rx_right_chan[10] = 1'b0;
  assign o_rx_right_chan[9] = 1'b0;
  assign o_rx_right_chan[8] = 1'b0;
  assign o_rx_right_chan[7] = 1'b0;
  assign o_rx_right_chan[6] = 1'b0;
  assign o_rx_right_chan[5] = 1'b0;
  assign o_rx_right_chan[4] = 1'b0;
  assign o_rx_right_chan[3] = 1'b0;
  assign o_rx_right_chan[2] = 1'b0;
  assign o_rx_right_chan[1] = 1'b0;
  assign o_rx_right_chan[0] = 1'b0;

endmodule


module i2s_top ( i_tx_sclk, i_rst_n, i_tx_prescaler, i_tx_left_chan, 
        i_tx_right_chan, o_rx_left_chan, o_rx_right_chan );
  input [15:0] i_tx_prescaler;
  input [15:0] i_tx_left_chan;
  input [15:0] i_tx_right_chan;
  output [15:0] o_rx_left_chan;
  output [15:0] o_rx_right_chan;
  input i_tx_sclk, i_rst_n;
  wire   w_sclk, w_lrclk, w_sdata;
  assign o_rx_left_chan[15] = 1'b0;
  assign o_rx_left_chan[14] = 1'b0;
  assign o_rx_left_chan[13] = 1'b0;
  assign o_rx_left_chan[12] = 1'b0;
  assign o_rx_left_chan[11] = 1'b0;
  assign o_rx_left_chan[10] = 1'b0;
  assign o_rx_left_chan[9] = 1'b0;
  assign o_rx_left_chan[8] = 1'b0;
  assign o_rx_left_chan[7] = 1'b0;
  assign o_rx_left_chan[6] = 1'b0;
  assign o_rx_left_chan[5] = 1'b0;
  assign o_rx_left_chan[4] = 1'b0;
  assign o_rx_left_chan[3] = 1'b0;
  assign o_rx_left_chan[2] = 1'b0;
  assign o_rx_left_chan[1] = 1'b0;
  assign o_rx_left_chan[0] = 1'b0;
  assign o_rx_right_chan[15] = 1'b0;
  assign o_rx_right_chan[14] = 1'b0;
  assign o_rx_right_chan[13] = 1'b0;
  assign o_rx_right_chan[12] = 1'b0;
  assign o_rx_right_chan[11] = 1'b0;
  assign o_rx_right_chan[10] = 1'b0;
  assign o_rx_right_chan[9] = 1'b0;
  assign o_rx_right_chan[8] = 1'b0;
  assign o_rx_right_chan[7] = 1'b0;
  assign o_rx_right_chan[6] = 1'b0;
  assign o_rx_right_chan[5] = 1'b0;
  assign o_rx_right_chan[4] = 1'b0;
  assign o_rx_right_chan[3] = 1'b0;
  assign o_rx_right_chan[2] = 1'b0;
  assign o_rx_right_chan[1] = 1'b0;
  assign o_rx_right_chan[0] = 1'b0;

  i2s_tx_AUDIO_DW16 i2s_tx ( .i_tx_sclk(i_tx_sclk), .i_tx_prescaler(
        i_tx_prescaler), .i_tx_rst_n(i_rst_n), .o_tx_sclk(w_sclk), 
        .o_tx_lrclk(w_lrclk), .o_tx_sdata(w_sdata), .i_tx_left_chan(
        i_tx_left_chan), .i_tx_right_chan(i_tx_right_chan) );
  i2s_rx_AUDIO_DW16 i2s_rx ( .i_rx_sclk(w_sclk), .i_rx_rst_n(i_rst_n), 
        .i_rx_lrclk(w_lrclk), .i_rx_sdata(w_sdata) );
endmodule

tcl

remove_design -all
set power_preserve_rtl_hier_names "true"
set base_dir /data/trainee05/DC_2016.03/i2s/rtl
define_design_lib work -path "work"
set topname "i2s_top"

set link_library /data/trainee05/DC_2016.03/ref/libs/mw_lib/sc/LM/sc_max.db
set target_library /data/trainee05/DC_2016.03/ref/libs/mw_lib/sc/LM/sc_max.db

analyze -library WORK -format verilog /data/trainee05/DC_2016.03/i2s/rtl/i2s_top.v
analyze -library WORK -format verilog /data/trainee05/DC_2016.03/i2s/rtl/i2s_tx.v
analyze -library WORK -format verilog /data/trainee05/DC_2016.03/i2s/rtl/i2s_rx.v

elaborate $topname -lib work -update

current_design $topname

compile

write -format verilog -hierarchy -output /data/trainee05/DC_2016.03/i2s/i2s.v

#exit

直流误差

line#       30: Warning:  /data/trainee05/DC_2016.03/i2s/rtl/i2s_rx.v:13: The construct 'declaration initial assignment' is not supported in synthesis; it is ignored. (VER-708)
line#       31: Warning:  /data/trainee05/DC_2016.03/i2s/rtl/i2s_rx.v:14: The construct 'declaration initial assignment' is not supported in synthesis; it is ignored. (VER-708)
line#       33: Warning:  /data/trainee05/DC_2016.03/i2s/rtl/i2s_rx.v:15: The construct 'declaration initial assignment' is not supported in synthesis; it is ignored. (VER-708)
line#      258: Warning: Verilog 'assign' or 'tran' statements are written out. (VO-4)
verilog synthesis register-transfer-level
© www.soinside.com 2019 - 2024. All rights reserved.