( ESNUG 263 Item 2 ) -------------------------------------------- [8/27/97]
From: kurt@wsfdb.com (Kurt Baty)
Subject: DC w/ DesignWare Builds Incorrect Logic Via Bad Parameter Passing
John,
Public service warning!
Synopsys builds incorrect logic by passing parameters incorrectly to
DesignWare library parts. This bug occurs in at least Revs. 3.4b
and 1997.01 of Design Compiler. This bug occurs when Design Compiler
is passing the parameter to a DesignWare library part, not when you're
using a DesignWare part locally nor when you're using a template part
locally. (If the parameter problem occured on a port width, Design
Compiler will inform you that you have a port width mismatch. )
I use a lot of instances of DesignWare parts in my designs because they
save me lines of code, thus making my time more productive.
I found this bug using my own DesignWare part, which is in the libary.
This bug has been assigned to the HDL Compiler, the "read -format
verilog" command.
parameter j = 'h1f;
parameter k = 8'h1f;
// working cases
DW03_reg_s_pl #(8,31) xgood1(data_in,clk,!reset,wr,good1);
DW03_reg_s_pl #(8,'h1f) xgood2(data_in,clk,!reset,wr,good2);
// parameter passed as 31
DW03_reg_s_pl #(8,j) xgood3(data_in,clk,!reset,wr,good3);
// parameter passed as 31
test_reg_s_pl #(8,8'h1f) xgood4(data_in,clk,!reset,wr,good4);
// local DesignWare part works
flop #(8,8'h1f) xgood5(data_in,clk,!reset,wr,good5);
// local template part works
// not working cases
DW03_reg_s_pl #(8,8'h1f) xbad1(data_in,clk,!reset,wr,bad1);
// parameter passed as 8! NOT 31 !!!
DW03_reg_s_pl #(8,k) xbad2(data_in,clk,!reset,wr,bad2);
// parameter passed as 8! NOT 31 !!!
DW03_reg_s_pl #(8,7'h1f) xbad3(data_in,clk,!reset,wr,bad3);
// parameter passed as 7! NOT 31 !!!
DW03_reg_s_pl #(8,9'h1f) xbad4(data_in,clk,!reset,wr,bad4);
// parameter passed as 9! NOT 31 !!!
DW03_reg_s_pl #(8,10'h1f) xbad5(data_in,clk,!reset,wr,bad5);
// parameter passed as 10 NOT 31 !!!
It appears the Synopsys parcer is using the first integer it sees!
- Kurt Baty
WSFDB Consulting
|
|