Hi Andrew, thanks for the reply. Apologies for the delay, i didn't realise you had replied to this topic ( i thought i would get an email notification!)
I'm still having no luck with this situation. I've created a testcase library which i forwarded to our EDA/CAD guys but i still haven't had any resolution.
I apologise in advance for the size of this post but i will try and detail the scenario as much as possible.
I have a top level testbench called tb_supply_sensitive_testcase which has the following views:
verilogams - the verilogams text based tesbench (shown below)
schematic - the schematic equivalent of the vams testbench
config_sch - the config view where everything is in schematic
config_vamstb_schdut - config where tb is vams, instantiated blocks are schematic
config_vamstb_vamsdut - config where everything is vams
ams_state_config_sch - simulation state for config_sch
ams_state_vamstb_schdut - simulation state for vamstb/sch blocks
ams_state_vamstb_vamsdut - state for everything in vams
I then have 4 cells:
logic_cell_1_5v - an AND gate from a 7v library
logic_cell_2_1v8 - an AND gate from a 1.8v library
LS_down_5v_to_1v8 - a "Down" Levelshifter (a 7v buffer)
LS_up_1v8_to_5v - an "Up" Levelshifter
All of which have 3 views:
symbol
schematic
verilogams
Where the verilogams view is a direct representation of the schematic but they include supply sensitivity statements on the IOs.
The verilogams testbench is as follows:
Code:`include "constants.vams"
`include "disciplines.vams"
`timescale 1s/1ns
module tb_supply_sensitive_testcase ( );
electrical tb_VDD_5v;
electrical tb_VDD_1v8;
electrical tb_VSS;
reg tb_in1;
reg tb_in2;
reg tb_in_logic_2;
reg tb_por;
wire tb_out;
wire tb_out_logic_1;
wire tb_out_dn;
wire tb_out_logic_2;
real v_VDD_1v8_r = 1.8;
real v_VDD_5v_r = 5;
real transition_time = 100n;
initial begin
tb_in1 = 1'b0;
tb_in2 = 1'b0;
tb_in_logic_2 = 1'b0;
tb_por = 1'b0;
$display("INFO: Simulation begins");
#(transition_time);
tb_in1 = 1'b1;
tb_in_logic_2 = 1'b1;
#(10u);
tb_in2 = 1'b1;
#(10u);
tb_in1 = 1'b0;
#(10u);
tb_in2 = 1'b0;
#(10u);
tb_in_logic_2 = 1'b0;
#(10u);
$display("INFO: Simulation ends");
$finish;
end
analog begin
V(tb_VDD_1v8) <+ transition(v_VDD_1v8_r, 0, transition_time);
V(tb_VDD_5v) <+ transition(v_VDD_5v_r, 0, transition_time);
V(tb_VSS) <+ 0;
end
logic_cell_1_5v I_logic_1 (
.in1(tb_in1),
.in2(tb_in2),
.out(tb_out_logic_1),
.VDD(tb_VDD_5v),
.VSS(tb_VSS)
);
LS_down_5v_to_1v8 I_levshift_dn (
.in(tb_out_logic_1),
.out(tb_out_dn),
.VDD(tb_VDD_1v8),
.VSS(tb_VSS)
);
logic_cell_2_1v8 I_logic_2 (
.in1(tb_out_dn),
.in2(tb_in_logic_2),
.out(tb_out_logic_2),
.VDD(tb_VDD_1v8),
.VSS(tb_VSS)
);
LS_up_1v8_to_5v I_levshift_up (
.OUT(tb_out),
.nOUT(),
.POR(tb_por),
.IN(tb_out_logic_2),
.V1p8(tb_VDD_1v8),
.V7D(tb_VDD_5v),
.VSS(tb_VSS)
);
endmodule
And the following code is the verilogams views of the 4 cells instantiated in the testbench.
Code:`include "constants.vams"
`include "disciplines.vams"
module logic_cell_1_5v ( out, VDD, VSS, in1, in2 );
input VDD;
input (* integer supplySensitivity = "VDD";
integer groundSensitivity = "VSS"; *) in2;
input (* integer supplySensitivity = "VDD";
integer groundSensitivity = "VSS"; *) in1;
input (* integer supplySensitivity = "VDD";
integer groundSensitivity = "VSS"; *) VSS;
output (* integer supplySensitivity = "VDD";
integer groundSensitivity = "VSS"; *) out;
electrical VDD;
electrical VSS;
wire out;
assign out = in1 && in2;
endmodule
Code:`include "constants.vams"
`include "disciplines.vams"
module logic_cell_2_1v8 ( out, VDD, VSS, in1, in2 );
input VDD;
input (* integer supplySensitivity = "VDD";
integer groundSensitivity = "VSS"; *) in2;
input (* integer supplySensitivity = "VDD";
integer groundSensitivity = "VSS"; *) in1;
input VSS;
output (* integer supplySensitivity = "VDD";
integer groundSensitivity = "VSS"; *) out;
electrical VDD;
electrical VSS;
assign out = in1 && in2;
endmodule
Code:`include "constants.vams"
`include "disciplines.vams"
module LS_down_5v_to_1v8 ( out, VDD, VSS, in );
input VDD;
input VSS;
input (* integer supplySensitivity = "VDD";
integer groundSensitivity = "VSS"; *) in;
output (* integer supplySensitivity = "VDD";
integer groundSensitivity = "VSS"; *) out;
electrical VDD;
electrical VSS;
wire out;
assign out = in;
endmodule
Code:`include "constants.vams"
`include "disciplines.vams"
module LS_up_1v8_to_5v ( OUT, nOUT, POR, IN, V1p8, V7D, VSS );
output (* integer supplySensitivity = "V7D";
integer groundSensitivity = "VSS"; *) nOUT;
input V7D;
input (* integer supplySensitivity = "V1p8";
integer groundSensitivity = "VSS"; *) IN;
input (* integer supplySensitivity = "V7D";
integer groundSensitivity = "VSS"; *) POR;
output (* integer supplySensitivity = "V7D";
integer groundSensitivity = "VSS"; *) OUT;
input VSS;
input V1p8;
electrical V7D;
electrical VSS;
electrical V1p8;
assign OUT = IN;
endmodule
Obviously i can't give the schematics but as i said above they are direct representations of the verilogams views.
Oops run out of characters, i'll follow up in a second post. Thanks.