Guest
I've used interface/modports (in the design RTL) to bundle signal-
groups by functionality, and it synthesizes just fine in Design
Compiler.
Now, I'm trying to write some concurrent SVA assertions at an I/O-
boundary between two functional-blocks.
Unfortunately, I can't seem to declare properties with modport
arguments.
Basically, it seems to me the property-arguments must be 'simple' bit-
signals (logic/reg/wire)
If I try to declare a property with an interface/modport as an
argument, my simulator
(IUS81) quits with a syntax error.
property prop_xyz( clk, rstn, sig );
@( posedge clk ) disable iff (!rstn)
$rose( sig ) |=> $fell( sig ); // 1T pulse-width
endproperty : prop_xyz
//sva_check_sig : assert
property( prop_xyz( .clk(clk), .rstn(rstn), .sig(sig) ) )
sva_check_sig : assert
property( prop_xyz( .clk(clk), .rstn(rstn), .sig(sig) ) )
else $error( "Doh!");
groups by functionality, and it synthesizes just fine in Design
Compiler.
Now, I'm trying to write some concurrent SVA assertions at an I/O-
boundary between two functional-blocks.
Unfortunately, I can't seem to declare properties with modport
arguments.
Basically, it seems to me the property-arguments must be 'simple' bit-
signals (logic/reg/wire)
If I try to declare a property with an interface/modport as an
argument, my simulator
(IUS81) quits with a syntax error.
property prop_xyz( clk, rstn, sig );
@( posedge clk ) disable iff (!rstn)
$rose( sig ) |=> $fell( sig ); // 1T pulse-width
endproperty : prop_xyz
//sva_check_sig : assert
property( prop_xyz( .clk(clk), .rstn(rstn), .sig(sig) ) )
sva_check_sig : assert
property( prop_xyz( .clk(clk), .rstn(rstn), .sig(sig) ) )
else $error( "Doh!");