như thế nào công cụ 'synplify' tổng hợp sysnopsys DW02_mac?

Q

quan228228

Guest
Trong 8.051 của tôi, có một khối DW02_mac Synopsys.Mô phỏng là đúng.Nhưng
Khi tôi chạy fpga, mac thấy rằng không thể làm việc.

Các funciotn máy Mac là một * b c;

ví dụ,
a = 16'h0001, b = 16'hffff, c = 32'h0000_0000;

kết quả là fpga 32'h0000_00001;
kết quả mô phỏng là 32'hffff_ffff;

Là các lỗi liên quan với tổng hợp fpga hoặc mã?Hoặc là có tương ứng lib cho DW02_mac?

Xin hãy giúp tôi.Cảm ơn rất nhiều.
Sau đây là DW02_mac.v;

module DW02_mac
(A, B, C, TC, MAC);

Tham số A_width = 8;
Tham số B_width = 8;

/ / Cổng kê khai danh sách theo thứ tự
input [A_width-1: 0] A;
input [B_width-1: 0] B;
input [A_width B_width-1: 0] C;
đầu vào TC;
sản lượng [A_width B_width-1: 0] MAC; reg [A_width B_width-1: 0] MAC;

chức năng [A_width B_width-1: 0] signed_mult;
input [A_width-1: 0] A;
input [B_width-1: 0] B;
reg [A_width-1: 0] a1;
reg [B_width-1: 0] b1;
reg [A_width B_width-1: 0] c1;
bắt đầu
/ / Synopsys synthesis_off
if ((A [A_width-1] === 1'bx | | B [B_width-1] === 1'bx)) bắt đầu
signed_mult = (A_width B_width (1'bx));
end else
/ / Synopsys synthesis_on
bắt đầu
if (A [A_width-1] === 1'b1)
a1 =-A;
khác
a1 = A;
nếu (B [B_width-1] === 1'b1)
b1 =-B;
khác
b1 = B;
c1 = a1 * b1;
if (A [A_width-1] == B! [B_width-1])
signed_mult =-c1;
khác
signed_mult = c1;
cuối
cuối
endfunction

luôn luôn bắt đầu
nếu (TC === 1'b1) bắt đầu / / ký phép nhân
MAC <= signed_mult (A, B) C;
end else begin
MAC <= A * B C;
end / / if
@ (TC hoặc A hoặc B hoặc C);
end / / quá trình

endmoduleThêm vào sau khi 1 giờ 44 phút:
i tự hỏi, nếu các chức năng là sythesisable.David

 
Tôi nghi ngờ liệu Synopsys cho phép người sử dụng tổng hợp các module designware của họ trong Synthesizers khác.

Verilog Các module bạn nhận được có nhiều khả năng chỉ dành cho mô phỏng.

HTH

 
yeh, tôi cũng có nghi ngờ này.Do u biết, là 'cáo chức năng' synthesisable hay không.Nếu không, làm thế nào để chặn đồ DW vào FPGA?

Cảm ơn!David

 
/ / Synopsys synthesis_off
if ((A [A_width-1] === 1'bx | | B [B_width-1] === 1'bx)) bắt đầu
signed_mult = (A_width B_width (1'bx));
end else
/ / Synopsys synthesis_on
implys nó là một mã cho mô phỏng
Tại sao không thay thế này DW với mã số riêng của bạn?

 

Welcome to EDABoard.com

Sponsor

Back
Top