Specify delays from outside of the cell

M

Michael

Guest
I have cell like:
`celldefine
module BUF (I, Z);
input I;
output Z;
buf (Z, I);

specify
(I => Z)=(0, 0);
endspecify

endmodule
`endcelldefine

Can I by some way to specify delay (I => Z)=(1, 2); from the outside?
Like from testbench?
 
On May 6, 5:24 am, Michael <michae...@gmail.com> wrote:
I have cell like:
`celldefine
module BUF (I, Z);
input I;
output Z;
buf (Z, I);

specify
(I => Z)=(0, 0);
endspecify

endmodule
`endcelldefine

Can I by some way to specify delay (I => Z)=(1, 2); from the outside?
Like from testbench?
You can use `defines or parameters for delay values and then set their
values them from the outside. For example:

`celldefine
module BUF (I, Z);
parameter rise_delay = 0, fall_delay = 0;
input I;
output Z;
buf (Z, I);

specify
(I => Z)=(rise_delay,fall_delay);
endspecify

endmodule
`endcelldefine

module test;

reg A = 0;
always #10 A <= ~A;
BUF #(1,2) my_buf (A,Z);

endmodule

You cannot use variables (regs, integers etc) to define delay since
specify delays must be constant.

-Alex
 
On May 8, 12:08 am, Alex <agnu...@gmail.com> wrote:
On May 6, 5:24 am, Michael <michae...@gmail.com> wrote:



I have cell like:
`celldefine
module BUF (I, Z);
input I;
output Z;
buf (Z, I);

specify
(I => Z)=(0, 0);
endspecify

endmodule
`endcelldefine

Can I by some way to specify delay (I => Z)=(1, 2); from the outside?
Like from testbench?

You can use `defines or parameters for delay values and then set their
values them from the outside. For example:

`celldefine
module BUF (I, Z);
parameter rise_delay = 0, fall_delay = 0;
input I;
output Z;
buf (Z, I);

specify
(I => Z)=(rise_delay,fall_delay);
endspecify

endmodule
`endcelldefine

module test;

reg A = 0;
always #10 A <= ~A;
BUF #(1,2) my_buf (A,Z);

endmodule

You cannot use variables (regs, integers etc) to define delay since
specify delays must be constant.

-Alex
I can't touch library cells.
 
On May 8, 3:51 am, Michael <michae...@gmail.com> wrote:
On May 8, 12:08 am, Alex <agnu...@gmail.com> wrote:





On May 6, 5:24 am, Michael <michae...@gmail.com> wrote:

I have cell like:
`celldefine
module BUF (I, Z);
input I;
output Z;
buf (Z, I);

specify
(I => Z)=(0, 0);
endspecify

endmodule
`endcelldefine

Can I by some way to specify delay (I => Z)=(1, 2); from the outside?
Like from testbench?

You can use `defines or parameters for delay values and then set their
values them from the outside. For example:

`celldefine
module BUF (I, Z);
parameter rise_delay = 0, fall_delay = 0;
input I;
output Z;
buf (Z, I);

specify
(I => Z)=(rise_delay,fall_delay);
endspecify

endmodule
`endcelldefine

module test;

reg A = 0;
always #10 A <= ~A;
BUF #(1,2) my_buf (A,Z);

endmodule

You cannot use variables (regs, integers etc) to define delay since
specify delays must be constant.

-Alex

I can't touch library cells.- Hide quoted text -

- Show quoted text -
The only other way is to adjust delay values in SDF file and use it to
override default cell delays. I don't believe this approach is
convenient for verification.

-Alex
 
On 8 May 2007 00:51:57 -0700, Michael <michaelst@gmail.com> wrote:

On May 8, 12:08 am, Alex <agnu...@gmail.com> wrote:
On May 6, 5:24 am, Michael <michae...@gmail.com> wrote:



I have cell like:
`celldefine
module BUF (I, Z);
input I;
output Z;
buf (Z, I);

specify
(I => Z)=(0, 0);
endspecify

endmodule
`endcelldefine

Can I by some way to specify delay (I => Z)=(1, 2); from the outside?
Like from testbench?

I can't touch library cells.
You want to change the delays defined in the libary but "can't touch
library cells". I don't think these are compatible goals in general.
If you're interested in making temporary changes to the library
delays, you can make a local copy of the library file and change the
specify blocks. If your changes are limited to a certain number of
cells you have, you can write a small SDF file and annotate it on your
design at the hierarchy point you want. You can even annotate multiple
sdf files.
 

Welcome to EDABoard.com

Sponsor

Back
Top