I want to test a mixed signal design in cadence virtuoso 6.1.5 with spectre.
To verify the functionallity of the digital part a very long input sequence, thousands of bits, is necessary.
I tried using the vbit source. What is very usefull about this is that it is possible to adjust the voltage levels as well as the length of one bit. This makes it superior over the vpwl at least for my application.
I found a helpful document that makes it possible to adjust the properties of vbit in a way that it is possible to insert a design variable for the data . Another document helped me to load a bitstream from a tex-file into this design variable inside ade-l.
The problem is that this is only possible for short bitstreams. At least my bitstream is too long for such a proceeding.
Is there any other approach to solve this problem?
A stimulus file would also be very long/large...
Do you need a specific bit pattern, or would a psudeo random bit pattern be OK?
I created a verilog-A module which generates a PRBS 2^15 - 1 bit pattern.
Bit period can be set via a clock input signal, or with a verilog-a "timer" event generator.
Output amplitude can be set by a parameter, or by pwr/gnd input pins.
Hope this is helpfull.
In reply to TonySal:
I need a specific bit pattern to test the digital part of my design.
Verilog-A is a good idea but the code would become very large...
In reply to Zitty:
There are several ways to tackle this problem (that I can think of). One of the ways is to use spectre's ability to define patterns (see "spectre -h pattern"). If I create a file called (say) "patterns.scs" and include it in ADE as a model library:
// my patternsp1 pattern data="10111011011"p2 pattern data="001100100101011"p3 pattern data="1111100001110001100"
Then on the vbit source (or vsource with type set to "bit"), I can set the pattern as (say) "p1,p2,p3" or "p1,p2,p2,p3,p1" - whatever you like - and it will then use the sequence of predefined patterns from the include file.
The alternative is to use the "vector" file input. Look at Setup->Simulation Files and there's a Vector Files tab. You can add the path to vector files. For more details on the syntax, look at "spectre -h vector". The precise details of the format are in the Ultrasim User Guide (<MMSIMinstDir>/doc/UltraSim_Use/UltraSim_User.pdf) - in the chapter entitled "Digital Vector File Format"). This allows you to take a file of vectors (in different radixes) and connect to one or more signals in your circuit - replacing the need for sources on the schematic.
In reply to Andrew Beckett:
Can the waveform generated from your second method have the rise time and fall time information intact ?
In reply to RFStuff :
Not sure what you mean about having the rise time and fall time information intact, but you can specify the rise and fall time (and various other signal characteristics) of the signals that are generated from the digital vectors. This is covered in the documentation that I mentioned earlier.
Well, I will see the doc.
Actually I am trying to change the pattern of the bit Source using the ocean script.
In the 1st iteration of the run say the bit Source V2 will have "p1,p2,p3"
in the 2nd iteration of the run it will have "p2,p2,p1" and so on.
I tried to enter a parameter 'x' in the pattern data tab of the V2 source so that I can change it in the ocean script but it is not taking it as a variable parameter.
Could you tell how it can be done so that I can change the pattern in the for loop ?
OK, this isn't entirely trivial. Follow these steps:
What the above is doing is getting the data parameter netlisted as a normal parameter (the netlist procedure that is usually used adds quotes around it, but in this case you don't want the quotes so that the value can be interpreted as a spectre parameter), and then you are ensuring the the netlist ends up with quotes around the parameter value. For example, here's my netlist:
simulator lang=spectreglobal 0parameters mypat="10010101"// Library name: mylib// Cell name: testbit// View name: schematicR0 (op 0) resistor r=1KV0 (op 0) vsource val1=1 val0=0 data=mypat delay=0 rise=1n fall=1n \ period=20n type=bit
Thanks a lot.
Just one mre thing:-
I am also using vsource-pwl for generating the clock waveform.
What exactly I am doing is that:-
I have captured the transient clk waveform of another circuit and stored it in a text file ( time amplitude) format. This clk is for one frequency.
I load the file in the vsource-pwl.
Similarly I have multiple .txt files for various frequrncies.
With the way anlogous to the way you have mentioned, can I change the file name in the loop by parameterizing it.
In other words I can run the sumulation for multiple frequency in a for loop.
Yes, do the same with the vpwlf source, and move the file parameter from otherParameters to instParameters.
Note, I didn't try this, but I believe it should work.
I have a file data in column fromat.
That is, instead of [ p1 pattern data="10111011011" ], I have in the file ( named clk_bit.txt ) as below:-
Is it possible to source this file in the VSOURCE, without editing the above file.
If so, could you please tell how it can be done .
No - you'd have to contact customer support and ask for an enhancement request to allow this to be read from a file.
The alternative might be to use a vector file input - (vec_include) - but even that would need the file in a slightly different format (some additional information at the top).
I had a question asked to me about this post, and it turns out that spectre has been able to read the pattern from a file since at least the time of the post above (I didn't check back to find out when it started working - it might have been always possible).
However, the vsource component in analogLib doesn't really support this. CCR 1110227 is there to enable that. Prior to IC617 ISR10 there was a workaround of filling in the filename when the source type was set to "pwl" and then changing the source type to "bit" to fill in the other parameters; unfortunately a change in that ISR causes the parameters to reset after changing the source type. I've filed CCR 1816593 to get that fixed.