science and technology Characterization of Full adder that use transmission gates using liberate By community.cadence.com Published On :: Mon, 04 Nov 2024 17:59:38 GMT Hello,I'm trying to characterize a full adder that use transmission gate.Unfortunately, the power calculation are wrong for the cell are always negative.Is there any method or commands that can can help in power calculation or add the power consumption by the input pins to the power calculation ?Another question, Is liberate support the characterization or transmission gate cells as standard cells or I should use liberate AMS for these type of cells ?Thanks in advance,Tareq Full Article
science and technology error when generating snp files from a variable By community.cadence.com Published On :: Tue, 05 Nov 2024 11:22:54 GMT Hello everyone, I have a testbench for generating s2p files from a SP simulation that was working until few months ago. Today I have reopened (w/o making changes that I am aware of) and I get the error as shown below: first I show the testbench settings: notice how the s2p generation is disabled: the field "file" is left blank in the corner I defined some parameters, "filename" is the word that is suppose to generate the name for the s2p. where the two variables are defined as follows And now the output log: spectre.out file gives the following error:When clicking on the error message at "9", the input.scs file opens up and the line 9 gets highlighted in greennow, so far I understood that the problem seem to be related tom the "pathcds" variable, but I really don't understand what the error message here means, since I don't see any error in the input.scs file by the way - if for instance I define the variable "filename" as shown below, then I get no errors: thanksTommaso Full Article
science and technology Colorcoding for low cpk in Yield-View in Assembler By community.cadence.com Published On :: Tue, 05 Nov 2024 13:06:47 GMT Hi, I'm searching for a way to get a quick overview of too low cpk-values after a montecarlo sim. The non-MC results have the spec and thus the easy/understandable red/green/(yellow) colorcoding, but for MC sims I don't get a highlight for high variations inside the limits. Is this possible (besides copying each expression into avg()+3*std()) and ..-..)? It would be really handy to scan through finished sims... (My final application is then to export the table for my reports and documentation...) Regards, leo Full Article
science and technology ddt VerilogA usage By community.cadence.com Published On :: Thu, 07 Nov 2024 13:14:08 GMT Hi, reading Verilog®-A Language Reference I found this description of ddt function I don't understand: Use the time derivative operator to calculate the time derivative of an argument. ddt( input [ , abstol | nature ] ) input is a dynamic expression. abstol is a constant specifying the absolute tolerance that applies to the output of the ddt operator. Set abstol at the largest signal level that you consider negligible. nature is a nature from which the absolute tolerance is to be derived. Can anyone explain how abstol and nature are defined? how using them? an example would be really appreciated. Thanks Andrea Full Article
science and technology Force virtuoso (Layout XL) to NOT create warning markers in design By community.cadence.com Published On :: Sat, 09 Nov 2024 08:54:31 GMT Hi I have a rather strange question - is there a way to tell layout XL to NOT place the error/warning markers on a design when I open a cell? I do a lot of my layout by using arrays from placed instances and create mosaics that completely ignore the metadata that Layout XL uses with its bindings with schematic (and instances get deleted etc. but I do like using it to generate all my pins etc.) and it's just really annoying when I open a design that I know is LVS clean and since the connectivity metadata is all screwed up (because I did not use it to actually complete the layout) I have a design that's just blinking at me at every gate, source and drain. I typically delete them at the high level heirarchically but the second I go in and modify something and come back up it places all of them again. I know that if I flatten all the p cells it goes away but sometimes it's nice to have that piece of metadata but that's about it. Is there a way to "break" the features of XL like this? I realize what a weird question this is but it's becoming more of an issue since we moved to IC 23 from IC 6 where there is no longer a layout L that I can use free from these annoyances that can't use any of the connectivity metadata. Thanks Chris Full Article
science and technology AMS simvision cannot load big psf.trn By community.cadence.com Published On :: Mon, 11 Nov 2024 18:27:49 GMT Hello all, I have run a simulation with a lot of instnaces extraction and the psf.trn is >= 200 Gb, I tried to load it with simvision and it just breaks. I would like to ask if there is a way to open this file, e.g. if I could read only some time window e.g. from 10us -> 15us. getVersion(t) "sub-version ICADVM20.1-64b.500.34 " XCELIUMMAIN23.03.001 thank you in advance Full Article
science and technology How to Set Up a Config View to Easily Switch Between Schematic and Calibre of DUT for Multiple Testbenches? By community.cadence.com Published On :: Tue, 12 Nov 2024 16:22:53 GMT Hello everyone, I hope you're all doing well. I’ve set up two testbenches (TB1 and TB2) for my Design Under Test (DUT) using Cadence IC6.1.8-64b.500.21 tools, as shown in the attached figure. The DUT has multiple views available: schematic, Calibre, Maestro, and Symbol, and each testbench uses the same DUT in different scenarios. Currently, I have to manually switch between these views, but I would like to streamline this process. My goal is to use a single config view that allows me to switch between the schematic and the extracted (Calibre) views. Ideally, I would like to have a configuration file where making changes once would update both testbenches (TB1 and TB2) automatically. In other words, when I modify one config, both testbenches should reflect this update for a single simulation run. I would really appreciate it if you could guide me on the following: How to create a config view for my DUT that can be used to easily switch between the schematic and extracted views, impacting both TB1 and TB2. Where to specify view priorities or other settings to control which view is used during simulation. Best practices for using a config file in this scenario, so that it ensures consistency across multiple testbenches. Please refer to the attached figure to get a better understanding of the setup I’m using, where both TB1 and TB2 include the same DUT with multiple available views. Thank you so much for your time and assistance! Full Article
science and technology Tagging uvm_errors in waveform file for post-processing By community.cadence.com Published On :: Thu, 08 Feb 2024 11:45:04 GMT Hi, Do anyone know if it's possible in simvision waveform viewer to see a timestamp of where uvm_errors/$errors occurred in a simulation via post-processing? Cheers, Antonio Full Article
science and technology incorrect output of multiplication in jaspergold By community.cadence.com Published On :: Fri, 16 Feb 2024 10:02:22 GMT I want to use jaspergold to formally verify functionality of my custom multiplier. I am computing the expected result using A*B to check against output of my multiplier. Here, A and B are two logic signed operands. However, jaspergold is performing the operation A*B incorrectly. I have reproduced this issue using the attached example. JasperGold compiles and elaborates the module and subsequently runs a formal proof. The tool raises a counterexample to assertion whose screenshot is attached below: I simulated the same example using xrun and it was giving the correct product output in simvision waveform. Please help me resolve this issue. I am using 2023.03 version of Jasper Apps. Thanks and regards Anubhav Agarwal Full Article
science and technology Jasper's elaborate -bbox_i seems to have no effect By community.cadence.com Published On :: Fri, 23 Feb 2024 12:32:52 GMT I'm trying to use Jasper for checking parameter propagation in a large design. I have a list of top-level parameters, each with a HDL path of a module parameter somewhere lower in the hierarchy that's supposed to receive its value from the top-level module. The FPV app seems like an excellent tool for this, but elaborating the entire design in it is extremely time-consuming and memory-intensive. So, I'm trying to black-box everything but the interesting HDL paths. I thought using `elaborate -top dut_module_name -bbox_i * -no_bbox_i inst_foo -no_bbox_i inst_bar (...)` would work, but it doesn't. Jasper just starts flooding the log with warnings from modules that are definitely not on the whitebox list, and eventually dies due to insufficient memory. When I use -bbox_m * it correctly elaborates the top-level module with all of its sub-modules black-boxed. But then the -no_bbox_i switches have no effect. Could anyone suggest a working solution for this use case? Full Article
science and technology UVM Adapter for Pipelined protocols like AHB, AXI etc By community.cadence.com Published On :: Sat, 24 Feb 2024 06:10:18 GMT Hello, I have been running this `uvm_reg_hw_reset_seq` sequence for the AHB protocol. My UVM Adapter looks like: Issue: When I use basic reg.write, my write access are working well, as that is managed by the driver i.e. once adapter gives the packet to the driver, the driver supplies the address and the control signals to the DUT on the first clock cycle and then the write data on the next clock cycle. But when I am performing the read operation, somehow the UVM adapter is reading the data at the same clock cycle where read address + Controls are supplied and this is triggering read failure messages from the `uvm_reg_hw_reset_seq` sequence. What should I modify in the driver/sequencer/adapter so that the UVM adapter can read the data on the next cycle instead of the same clock cycle. Just FYI: The waveforms of the read operation are correct, it is just the Adapter and the `uvm_reg_hw_reset_seq`. The AHB Driver + AHB Monitor is fully proven and verified to be working correctly. Full Article
science and technology Using Xcelium, xrun -nogui option, where are the simulation results By community.cadence.com Published On :: Thu, 29 Feb 2024 18:23:56 GMT I'm completely new to Cadence. I've been able to run a very simple simulation with the -gui option. Simvision opens, I add the variables to the waveform viewer, and press run. All is good. I don't understand the flow when using the -nogui option. It appears that the simulation runs and returns control to the OS. When I launch Simvision, is there a database or file that I can open to display the already-simulated data? My command is of the form: xrun -gui -64bit -sv -access +rwc -top tb_top.sv <src files> Full Article
science and technology Importing ODF to vManager does not update vplan By community.cadence.com Published On :: Tue, 05 Mar 2024 06:20:00 GMT I exported vplan to .odf file in vManager and after editing it I imported it to vManager. The vplan was expected to be synchronized and updated. However, nothing has changed to it. Does anyone know why? Full Article
science and technology UVM debugging: How to save and load signals during an interactive session in Simvision By community.cadence.com Published On :: Thu, 07 Mar 2024 23:18:50 GMT Hello, I am aware of command script .svcf file that saves signals and loads them in while opening Simvision. I am wondering, if there is a way for saving signals while we are in an interactive session and loading them next time when we open Simvision interactively. Any ideas on how to do this? Thank you in advance. Swetha. C Full Article
science and technology Using Vmanager Pre-Script to launch a timed script By community.cadence.com Published On :: Thu, 07 Mar 2024 23:32:05 GMT I would like to send an update about a vmanager regression status x days after the regression has been run. In the current environment, the vmanager regression is creating a new filepath for logs automatically based on regression name/date, so I can't use a cron job to gather logs, as the log location is not known. I tried to use the pre session script to launch a detached shell script that would run after a delay, but when the pre_script runs, it waits until everything is completed before finishing and moving on to starting the regression. Here is the test pre_script I am using: #!/bin/sh echo "pre_script start" delay_script "FIRST" 1nohup delay_script "SECOND" 30 & disowndelay_script "THIRD" 1 echo "pre_script end"exit 0 Here is the test delay_script I am using: #!/bin/sh echo "Starting $1" sleep $2 echo "Ending $1" Here is the script output when run from terminal. After the "pre_script end", I get control back. Here is the script output when run from vmanager. There is no "nohup", and the pre_session phase doesn't complete until all the delay scripts complete. My question is, is there a better way to achieve my goal here? (The goal being to run a script from the vmanager log directory automatically x days after the regression). I think I could use the pre_script to send directory information for an auxiliary cron job to pick up, but I would prefer to not have to have extra cronjobs needed for this. Full Article
science and technology vManager crashes when analyzing multiple sessions simultaneously with a fatal error detected by the Java Runtime Environment By community.cadence.com Published On :: Sat, 16 Mar 2024 04:34:41 GMT When analyzing multiple sessions simultaneously Verisium Manager crashed and reported below error messages: # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007efc52861b74, pid=14182, tid=18380 # # JRE version: OpenJDK Runtime Environment Temurin-17.0.3+7 (17.0.3+7) (build 17.0.3+7) # Java VM: OpenJDK 64-Bit Server VM Temurin-17.0.3+7 (17.0.3+7, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64) # Problematic frame: # C [libucis.so+0x238b74] ...... For more details please refer to the attached log file "hs_err_pid21143.log". Two approaches were tried to solve this problem but neither has worked. Method.1: Setting larger heap size of Java process by "-memlimit" options.For example "vmanager -memlimit 8G". Method.2: Enlarging stack memory size limit of the Coverage engine by setting "IMC_NATIVE_STACKSIZE" environment variable to a larger value. For example "setenv IMC_NATIVE_STACKSIZE 1024000" According to "hs_err_pid*.log" it is almost certain that the memory overflow triggered Java's CrashOnOutOfMemoryError and caused Verisium Manager to crash. There are some arguments about memory management of Java like "Xms, Xmx, ThreadStackSize, Xss5048k etc" and maybe this problem can be fixed by setting these arguments during analysis. However, how exactly does Verisium Manager specify these arguments during analysis? I tried to set them by the form of setting environment variables before analysis but it didn't work in analysis and their values didn't change. Is there something wrong with my operation or is there a better solution? Thank you very much. Full Article
science and technology explain/correct my understanding between average/covered in imc metrics By community.cadence.com Published On :: Wed, 17 Apr 2024 05:36:41 GMT I'm working on the code coverage. Doing a metrics analysis by default we see overall average grade and overall covered. But when i do a block analysis on an instance i see overall covered grade, code covered grade, block covered grade, statement covered grade, expression covered grade, toggle covered grade. As I dont know the difference I started to read the IMC user guide and came to know there are 3 things we come across while doing a code coverage local, covered, average From my understanding local - child instances metrics doesnt reach the parent level. For example, we have an instance Q and its sub instances like Q.a, Q.b. Block Local grade of Q can be 100% even when its instances Q.a and Q.b a block local grades isnt at 100%. In the attached image there is formula The key difference between average and covered is the weights. Average : Mathematically taking the above scenario where Q.a, and Q.b has 10 blocks each. Q.a has covered 8 blocks and q.b has covered 2 blocks. Now if we take the normal average it should be total covered/ totatl number = 8+2/10+10 yielding 50%. But when we add weights saying Q.a is 70% and Q.b is 30% the new number would be (8*0.7+2*0.3) / (10*0.7+10*0.3) resulting 62%. Because of the weights we see 12% bump. Covered: there is no role of weights. Among these 3 metrics i've changed my default view to this in the image to get more realistic picture when i do analyze metrics. Do you guys agree with the approach? Full Article
science and technology Parameterizing an Instance By community.cadence.com Published On :: Wed, 24 Apr 2024 16:03:12 GMT Hi,I want to parameterized width and length of a NMOS, but it ignore it and I face this error:*WARNING* Value input must be a number - setting back to previous value.Does anybody know how I can fix this issue?Thanks Full Article
science and technology How do I create a basic connectivity csv? By community.cadence.com Published On :: Sat, 27 Apr 2024 00:58:07 GMT First time user of JasperGold. Chip level verif. I want to prove that an arbiter and a buffer are connected. I want to use the connectivity app to do that. I see from the user guide, that I should provide a connectivity map, but i have no idea how to construct one.The training videos said use this command: check_conn -generate_template jasper_template.xlsm -xlsmBut that did nothing, or at least it did not produce a file that i could find [<embedded>] % check_conn -generate_template jasper_template.xlsm -xlsmERROR (ESW104): Invalid command formation. Problem occurs with "-generate_template -xlsm". And even if it did, I don't even know what's in the file, and whether it contains the two ips I'm trying to check.I'm hoping someone can give me a bit of a boost here with some knowledge. Full Article
science and technology [Xcelium][xrun] Simulate with multiple builds By community.cadence.com Published On :: Sun, 05 May 2024 06:21:52 GMT I want to do a 2-step build->simulate as follow: 1. Make multiple builds using xrun -elaborate [other options]. The purpose is to create multiple builds with different compile-time macros (+define+MACROA +define+MACROB=ABC). Each build is located in a different directory. 2. Run simulation with xrun -r. This is where I need help. How do I specify which build to simulate? Also, I need the simulation directory (with log files, …) to be different than the build directory. Has anyone been able to achieve this or similar solutions? Full Article
science and technology LVS netlist By community.cadence.com Published On :: Thu, 09 May 2024 09:10:57 GMT How could we inherit parameters from schematic to a layout netlist? Those parameters are user defined parameter given in CDF and netlsiting in schematic. Full Article
science and technology xcelium - CSI: *F,INTERR: INTERNAL EXCEPTION By community.cadence.com Published On :: Sun, 19 May 2024 10:06:24 GMT I just completed the setup of xcelium and I am trying to test a very simple vhdl file - I got " CSI: *F,INTERR: INTERNAL EXCEPTION" without any further explanation. Could someone point me to how to investigate this error further? csi-xmelab - CSI: Command line: xmelab -f /home/cadadmin/test/xcelium.d/run.lnx86.23.03.d/xmelab.args -ACCESS +r -no_analogsolver -MESSAGES andgate -XLMODE ./xcelium.d/run.lnx86.23.03.d -RUNMODE -CDSLIB ./xcelium.d/run.lnx86.23.03.d/cds.lib -HDLVAR ./xcelium.d/run.lnx86.23.03.d/hdl.var -WORK worklib -IRUNHASTOP -CHECK_VERSION TOOL: xrun 23.03-s001 -LOG_FD 4 csi-xmelab - CSI: *F,INTERR: INTERNAL EXCEPTION-----------------------------------------------------------------The tool has encountered an unexpected condition and must exit.Contact Cadence Design Systems customer support about thisproblem and provide enough information to help us reproduce it,including the logfile that contains this error message. TOOL: xmelab 23.03-s001OPERATING SYSTEM: Linux 4.18.0-513.9.1.el8_9.x86_64 #1 Elaboration of package STD.STANDARD----------------------------------------------------------------- csi-xmelab - CSI: Cadence Support Investigation, recording detailscsi-xmelab - CSI: investigation complete took 0.000 secs, send this file to Cadence Support Full Article
science and technology "How to disable toggle coverage of unused logic" By community.cadence.com Published On :: Tue, 28 May 2024 11:46:30 GMT I'm currently work in coverage analysis. In my design certain register bits remain unused, which could potentially lower toggle coverage. Specifically, I'd like to know how to disable coverage for specific unused register bits within a 32-bit register. For instance, I want to deactivate coverage for bit 17 and bit 20 in a 32-bit register to optimize toggle coverage. Could you please provide guidance on how to accomplish this? Full Article
science and technology Is it possible to automatically exclude registers or wires that are not used from toggle coverage? By community.cadence.com Published On :: Wed, 03 Jul 2024 12:04:29 GMT Hello, I have a question about toggle coverage. In my case, there are many unused registers or wires that are affecting the toggle coverage score negatively. Is it possible to automatically exclude registers or wires that are not used from toggle coverage? My RTL code is as follows, Is it possible to automatically disable tb.top1.b and tb.top1.c without using an exclude file? module top1; reg a; reg b; reg [31:0] c; initial begin #1 a=1'b0; #1 a=1'b1; #1 a=1'b0; end endmodule module tb; top1 top1(); endmodule Full Article
science and technology Issues related to cadence xrun command By community.cadence.com Published On :: Thu, 08 Aug 2024 06:47:05 GMT We are trying to run compilation, elab and sim with command xrun -r -u alu, where alu is one of the units to execute. we are getting the following errors.1) xmsim: *E,DLMKDF: Unable to add default DEFINE std /home/xxxx/Cad/xcelium/tools/inca/files/STD. xmsim: *E,DLMKDF: Unable to add default DEFINE synopsys /home/xxxx/Cad/xcelium/tools/inca/files/SYNOPSYS 2) xmsim: *W,DLNOHV: Unable to find an 'hdl.var' file to load in. What is the purpose of hdl.var3) xmsim: *F,NOSNAP: Snapshot 'alu' does not exist in the libraries. I cannot see in log files, which libraries is it referring to?? Any one request you to help on how to debug these. Full Article
science and technology Xcelium: dump coverage information in the middle of a simulation By community.cadence.com Published On :: Fri, 23 Aug 2024 10:25:15 GMT Hi, I'm using the xcelium simulator to simulate a testbench, in which I first stimulate my design to do something (part "A") and then do a direct follow-up test on the design (part "B"). I need two things from this testbench: the results of the test (part "B", passed/failed) and coverage information, but the coverage information should only include part A and explicitly not part B. I could do the following: run the testbench with part A and B, get the "passed/failed" result of the test and then follow up another simulator run with another testbench, that only includes part A and get the coverage information from that simulation run. Is there a way to force xcelium to give me the coverage information of only a part of the simulation? Ideally, I would like to write the verilog code of my testbench to look something like this: do A dump coverage information do B But maybe there is another way to tell xcelium to consider only part of the testbench for the coverage information. I did have a look at the manual, but was not able to find something useful for this problem. Any ideas? Full Article
science and technology Simvision Array Slicing By community.cadence.com Published On :: Fri, 30 Aug 2024 07:33:33 GMT > reg [63:0] rMem [0:255] signal it can be confirmed by rMem [0:255] in Simvision Is it possible to generate a new rMem1 signal and rMem2 signal by splitting it into 32 bits width through right-click> Create on rMem? Full Article
science and technology Collecting Coverage using Vmanager By community.cadence.com Published On :: Mon, 02 Sep 2024 16:13:36 GMT Hi, I am running a regression in order to collect the coverage. However I have an issue. I am setting a signal to 0 when reset is de-asserted then this signal takes a fixed value when the reset is asserted. if(!rst_n) init_val= 'b0; else init_val= 31'h34013FF7 the issue is that I got 0% coverage for the init_value since we only have a rising edge and the signal is not toggling during the simulation. is there an option to collect coverage when there is a rising edge or a falling edge? Full Article
science and technology Indago stops everytime sees the UVM_ERROR By community.cadence.com Published On :: Sun, 08 Sep 2024 02:56:06 GMT I am running simulation in gui mode using Indago and every time there is UVM_ERROR occur simulation stops. I have to resume it manually. is there any way to disable this feature. Full Article
science and technology Using vManager to identify line coverage from a specific test By community.cadence.com Published On :: Tue, 24 Sep 2024 21:20:52 GMT I have been using the rank feature to identify tests that are redundant in our environment, but then I realized I'd also like to be able to see exactly what coverage goes into increasing the delta_cov value for a given test. If I had a test in my rank report that contributed 0.5% of the delta_cov, how could I got about seeing exactly where that 0.5% was coming from? It seems like that might be part of the correlate function, but I couldn't mange to find a way to see what specific coverage was being contributed for a given test. Full Article
science and technology Auto-Coloring Waves in Simvision? By community.cadence.com Published On :: Wed, 25 Sep 2024 22:09:53 GMT Hello, First, I had something working that broke in the past few versions that I've been meaning to get working again. There was some setting I recall in the GUI that allowed me to have inputs be placed in the waveform viewer with yellow traces, and output signals with orange traces to match the name colors. How can I set this to happen in the .simvisionrc file? Second, I would like to add something to my .simvisionrc file to go through foreach signal and depending on key locations based on the signal's Path.Name (mainly the model and design areas) such that if the path contains "mon", then to auto-set the trace and name colors to something such as cyan. I'd like to have loops for various key areas of the design to color-code the signals. Third, I am interested if there is a possibility of coloring names/traces foregound colors to based on which position they are in the waveform viewer to make banding, ideally such that every three (or whatever) are one color (or a color mutation, adding some gray to signals colorized by the auto-coloring mentioned already, etc) that allows for the signal names/traces to be colorized along with the built-in optional black/gray background banding. Thanks in advance Full Article
science and technology Archive of Tools Classification Analysis (Xcelium) By community.cadence.com Published On :: Tue, 05 Nov 2024 16:19:01 GMT Hi, Current and valid TCAs for Functional Safety are readily available at the FuSa "one-stop shop". But I have not been able to find any archive repository for access to the obsoleted versions. I would need to have also v1.4 of Xcelum TCA to investigate exact changes wrt previous projects. Anyone knows how to find it? Best regards, Lars Full Article
science and technology Using "add net constraints" command in Conformal By community.cadence.com Published On :: Thu, 01 Mar 2007 08:37:14 GMT Hi I have tried using "add net constraints" command to place one-cold constraints on a tristate enable bus. In the command line we need to specify the "net pathname" on which the constraints are to be enforced. The bus here is 20-bit. How should the net pathname be specified to make this 20-bit bus signals one_hot or one_cold. The bus was declared as follows: ten_bus [19:0] The command I used was add net constraints one_hot /ren_bus[19] What would the above command mean? Should we not specify all the nets' pathnames on the bus? Is it sufficient to specify the pathname of one net on the bus? I could not get much info regarding the functionality of this command. I would be obliged if anyone can throw some light. Thanks Prasad. Originally posted in cdnusers.org by anssprasad Full Article
science and technology c interface with specman By community.cadence.com Published On :: Thu, 05 Apr 2007 01:56:58 GMT Hi, I need to call a c function form specman . I had followed the below steps.File vb_pattern.e--------------------------------- struct vb_pattern_s{ %data_in_ch0 : uint (bits : 4); // data on channel 0 %data_in_ch1 : uint (bits : 4); // data on channed 1 %data_in_ch2 : uint (bits : 4); // data on channel 2 %mode : uint (bits : 1); // mode %enable : uint (bits : 1); // enable };C export vb_pattern_s;------file x_output_bfm.e--------------------------------------------check_patterns()@clk_e is{ ... exp_viterbi_op();}routine exp_viterbi_op() is C routine viterbi_c_func;---- EOF------X.c#include "vb_pattern.h" void viterbi_c_func (){ SN_TYPE(vb_pattern_s) vb_packet; SN_TYPE(mode) mode; vb_packet = SN_SYS->ops mode = vb_packet->mode; printf(" Printing from C environment MODE = %h ", mode); }------------------- EOF----x_top.e------------import tb/vb_pattern.e;import tb/x_input_bfm.e;import tb/x_output_bfm.e;import tb/x_cover_dut.e;import tb/x_env.e;I did the following comand>> sn_compile.sh -h_only x_top.e -o vb_pattern.h>> gcc -c viterbi.c -o viterbi.oI am getting the following errorviterbi.c: In function `viterbi_c_func':viterbi.c:6: error: `t__mode' undeclared (first use in this function)viterbi.c:6: error: (Each undeclared identifier is reported only onceviterbi.c:6: error: for each function it appears in.)viterbi.c:6: error: syntax error before "mode"viterbi.c:7: error: `mode' undeclared (first use in this function)Please help me resolve this.Kesav Originally posted in cdnusers.org by kesava Full Article
science and technology Cisco's utilities library donation By community.cadence.com Published On :: Fri, 18 May 2007 16:56:47 GMT Dear users, Cisco has graciously agreed to donate a library of several utilities packages to the e community. Please refer to the LIBRARY_README.txt for general information, and to each of the packages' PACKAGE_README.txt file for more information on each package. The tar file containing the utilities library is attached to this message. The zip file containing informational slides on Cisco's utility library packages is also attached. The zip file is 9 mg so may take a bit to download. The file is too big to fit on this post, so the unzipped files are posted in three separate entries below. For your convenience, we have also extracted the document “Directory Structure.doc” from the csco_base_env/docs location. Note: The library contains the csco_testflow package, adding phases to e's run phase. Cadence strongly encourages Customers to adopt the testflow phases feature that Cadence is releasing in Specman6.2. The new phases in e will be similar to the phases defined in the csco_testflow package, but will be a formal part of the e language. For more information please contact IPCM@cadence.com.Originally posted in cdnusers.org by meirav Full Article
science and technology Posting code to the forum By community.cadence.com Published On :: Tue, 24 Jul 2007 14:01:07 GMT When posting code to the forums, copy from a text editor such as notepad, not from word or Outlook. Be sure to click the HTML tab BEFORE you paste your text. Click on the "html" mode tab on your "reply" dialog box. Then wrap your text with like this: pasted text NOTE: Do not put a space in the I have done that here so it will show up as text. Also, be sure to click the HTML tab BEFORE you paste your text. This is how it will look when coded correctly pasted text Originally posted in cdnusers.org by Administrator Full Article
science and technology Macro for multiple-value when definitions By community.cadence.com Published On :: Wed, 31 Oct 2007 08:23:28 GMT The two macros below introduce new syntax for adding definitions to more than one 'when' determinant value at the same time. The first macro overloads 'extend' keyword and the second is the equivalent for 'when' keyword.A use example:extend [HUGE, BIG] packet { // definitions that pertain to these subtypes};The above code would be expanded in the following (naive) way:extend HUGE packet { // definitions that pertain to these subtypes };extend BIG packet { // definitions that pertain to these subtypes }; The macros code:define 'statement> "extend ['name>,...] 'name> ({;...})" as computed { for each in 'names> do { result = appendf("%sextend %s %s %s;",result,it,'name>,); }; result = appendf("{%s}",result); // required only for versions 6.1.1 or earlier};define 'struct_member> "when ['name>,...] 'name> ({;...})" as computed { for each in 'names> do { result = appendf("%swhen %s %s %s;",result,it,'name>,); }; result = appendf("{%s}",result); // required only for versions 6.1.1 or earlier};Originally posted in cdnusers.org by matanvax Full Article
science and technology Item constraint macro By community.cadence.com Published On :: Wed, 31 Oct 2007 09:15:20 GMT The following macros encapsulates a design pattern that enables constraining data item fields by 'do' actions of a high level sequence. This can be done without presupposing anything about the sequence tree generated under the do-ing sequence.The tar file consists of 4 files:- item_constraint_macro.e - the 'item_constraint' and 'sequence_export' macros definition- item_constraint_example.e and sequence_export_example.e - use examples (one per each new construct)- packet_seq.e - an auxiliary definition file for the examplesThis topic was discussed in a Club-T presentation (Israel, Sophia-Antipolis, Munich). The presentation is also publicly avaiable.Originally posted in cdnusers.org by matanvax Full Article
science and technology ce_tools directory no longer shipped with Specman By community.cadence.com Published On :: Tue, 22 Apr 2008 08:59:07 GMT Hello All,starting with version 8.1 the contents of the ce_tools directory will no longerbe shipped with Specman. The directory contains some unsupported AE/R&Dware and has not been updated for several releases (i.e. most of those oldpackages don't work with the latest release). Attached is the contents of this directory. Please read the README beforeusing any of the packages.Regards,-hannesOriginally posted in cdnusers.org by hannes Full Article
science and technology Welcome! Please use this forum to upload your code By community.cadence.com Published On :: Tue, 05 Aug 2008 21:01:43 GMT Please include a brief summary of how to use it. Full Article
science and technology Register Classes for SystemVerilog OVM By community.cadence.com Published On :: Tue, 09 Sep 2008 23:20:24 GMT Hi, I am uploading a register class, which can be used for modeling hardware registers. I am uploading the source code and examples on how to run it. I also have a user guide which has all the APIs listed and explained. The user guide is ARV.pdf in the attached tar file. I have named the class ARV, which stands for Architect's Register View. It has got very good randomization and coverage features. Users have told me that its better than RAL. You can download it from http://verisilica.info/ARV.php. There is a limit of 750KB in this cadence website. The ARV file is 4MB. That is why, I am uploading it at this site. I have a big pdf documentation and a doxygen documentation there. That is the reason for the bigger file size. The password to open the ZIP file is ovm_arv. I hope, everyone will use these classes. Please contact me for any help. Regards ANil Full Article
science and technology Specman Makefile generator utility By community.cadence.com Published On :: Tue, 02 Dec 2008 08:31:45 GMT I've heard lots of people asking for a way to generate Makefiles for Specman code, and it seems there are some who don't use "irun" which takes care of this automatically. So I wrote this little utility to build a basic Makefile based on the compiled and loaded e code.It's really easy to use: at any time load the snmakedeps.e into Specman, and use "write makefile <name> [-ignore_test]".This will dump a Makefile with a set of variables corresponding to the loaded packages, and targets to build any compiled modules.Using -ignore_test will avoid having the test file in the Makefile, in case you switch tests often (who doesn't?).It also writes a stub target so you can do "make stub_ncvlog" or "make stub vhdl" etc.The targets are pretty basic, I thought it was more useful to #include this into the main Makefile and define your own more complex targets / dependencies as required.The package uses the "reflection" facility of the e language, which is now documented since Specman 8.1, so you can extend this utility if you want (please share any enhancements you make). Enjoy! :-)Steve. Full Article
science and technology vr_ad register definition utility By community.cadence.com Published On :: Tue, 13 Jan 2009 06:55:41 GMT Hi All.I put together a small Perl script to generate vr_ad register definitions from SPIRIT (IP-XACT) XML.If you've got not idea what IP-XACT is, have a look here www.spiritconsortium.org/, then start pestering your design manager to use it :-)The script can filter out registers and override R/W access types if needed.An example XML file is included with the package so that you can play with it, and there's a detailed README.txt as well.Here's an example of the generated e code:// Automatically generated from xdmac.xml// DO NOT EDIT, or your changes may be lost<'import vr_ad/e/vr_ad_top;// Component = XDMAC// memoryMap = xdmacextend vr_ad_map_kind : [XDMAC];// addressBlock = dma_ethextend vr_ad_reg_file_kind : [DMA_ETH];extend DMA_ETH vr_ad_reg_file { keep size == 20; keep addressing_width_in_bytes == 4;};// Register = command// Reset = 0x00reg_def COMMAND DMA_ETH 0x0 { // Field resv3 = command[31:29] reg_fld resv3 : uint(bits:3) : R : 0 : cov ; // Field transfer_size = command[28:19] reg_fld transfer_size : uint(bits:10) : RW : 0 : cov ; // Field dma_transfer_target = command[18:14] reg_fld dma_transfer_target : uint(bits:5) : RW : 0 : cov ; // Field resv2 = command[13:10] reg_fld resv2 : uint(bits:4) : R : 0 : cov ; // Field transmit_receive = command[9:9] reg_fld transmit_receive : uint(bits:1) : RW : 0 : cov ; // Field resv1 = command[8:5] reg_fld resv1 : uint(bits:4) : R : 0 : cov ; // Field dest_address_enable = command[4:4] reg_fld dest_address_enable : uint(bits:1) : RW : 0 : cov ; // Field source_address_enable = command[3:3] reg_fld source_address_enable : uint(bits:1) : RW : 0 : cov ; // Field word_size = command[2:0] reg_fld word_size : uint(bits:3) : R : 0 : cov ;};// Register = queue_exec// Reset = 0x00reg_def QUEUE_EXEC DMA_ETH 0x10 { // Field resv = queue_exec[31:1] reg_fld resv : uint(bits:31) : R : 0 : cov ; // Field exec = queue_exec[0:0] reg_fld exec : uint(bits:1) : RW : 0 : cov ;};extend XDMAC vr_ad_map { dma_eth : DMA_ETH vr_ad_reg_file; post_generate() is also { add_with_offset(0x00, dma_eth); dma_eth.reset(); };}'> Any comments, please feed them back to me so I can enhance the script. Note that this forum forces me to post a .zip file rather than .tgz, please be careful to unpack the file under Linux, not Windows, else the DOS linefeeds will corrupt the Perl and XML files. Steve Full Article
science and technology e-code: Macro example code for Team Specman blog post By community.cadence.com Published On :: Mon, 27 Apr 2009 07:11:19 GMT Hi everybody, The attached package is a tiny code example with a demo for an upcoming Team Specman blog post about writing macros. Hilmar Full Article
science and technology IntelliGen Statistics Metrics Collection Utilility By community.cadence.com Published On :: Thu, 04 Jun 2009 16:24:28 GMT As noted in white papers, posts on the Team Specman Blog, and the Specman documentation, IntelliGen is a totally new stimulus generator than the original "Pgen" and, as a result, there is some amount of effort needed to migrate an existing verification environment to fully leverage the power of IntelliGen. One of the main steps in migrating code is running the linters on your code and adressing the issues highlighted. Included below is a simple utility you can include in your environment that allows you to collect some valuable statistics about your code base to allow you to better gauge the amount of work that might be required to migrate from Pgen to IntelliGen. The ICFS statistics reported are of particular benefit as the utility not only identifies the approximate number of ICFSs in the environment, it also breaks the total number down according to generation contexts (structs/units and gen-on-the-fly statements) allowing you to better focus your migration efforts. IMPORTANT: Sometimes a given environment can trigger a large number of IntelliGen linting messages right off the bat. Don't let this freak you out! This does not mean that migration will be a long effort as quite often some slight changes to an environment remove a large number of identified issues. I recently encountered a situation where a simple change to three locations in the environment, removed 500+ ICFSs!The methods included in the utility can be used to report information on the following:- Number of e modules - Number of lines in the environment (including blanks and comments)- Number and type of IntelliGen Guidelines linting messages- Number of Inconsistently Connected Field Sets (ICFSs)- Number of ICFS contexts and how many ICFSs per context- Number of soft..select overlays found in the envioronment- Number of Laces identified in the environmentTo use the code below, simply load it before/after loading e-code and then you can execute any of the following methods:- sys.print_file_stats() : prints # of lines and files - sys.print_constraint_stats() : prints # of constraints in the environment- sys.print_guideline_stats() : prints # of each type of linting message- sys.print_icfs_stats() : prints # of ICFSs, contexts and #ICFS/context- sys.print_soft_select_stats() : prints # of soft select overlay issues- sys.print_lace_stats() : *Only works for SPMNv6.2s4 and later* prints # of laces identified in the environmentEach of the above calls to methods produces it's own log files (stored in the current working directory) containing relevant information for more detailed analysis. - file_stats_log.elog : Output of "show modules" command- constraint_log.elog : Output of the "show constraint" command- guidelines_log.elog : Output of "gen lint -g" (with notification set to MAX_INT in order to get all warnings)- icfs_log.elog : Output of "gen lint -i" command- soft_select_log.elog: Output of the "gen lint -s" command- lace_log.elog : Output of the "show lace" commandHappy generating!Corey Goss Full Article
science and technology ctags for e code, Vim compatible By community.cadence.com Published On :: Mon, 13 Jul 2009 17:56:07 GMT In a nutshell, tags allows you to navigate through program code distributed over multiple files effectively. e.g if you see a function call or a struct in e-code and want to "jump" to the definition (which may be in a different file) then you just hit CTRL+] in Vim! Pressing CTRL+t will take you back where you came from. Check out http://vim.wikia.com/wiki/Browsing_programs_with_tags#Using_tags if you want to learn more about how to use tags with Vim.This utility can generate tags file for your e files. It can either walk through e import order, a directory recursively or all directories on SPECMAN_PATH recursively! The tags file will have tags for struct, unit, types, events, defines, fields, variables, etc.For help and some examples, just run ctags4e -help. Full Article
science and technology latest Specman-Matlab package By community.cadence.com Published On :: Tue, 15 Sep 2009 05:56:14 GMT Attached is the latest revision of the venerable Specman-Matlab package (Lead Application Engineer Jangook Lee is the latest to have refreshed it for a customer in Asia to support 64 bit mode. Look for a guest blog post from him on this package shortly.)There is a README file inside the package that gives a detailed overview, shows how to run a demo and/or validate it’s installed correctly, and explains the general test flow. The test file included in the package called "test_get_cmp_mdim.e" shows all the capabilities of the package, including:* Using Specman to initialize and tear down the Matlab engine in batch mode* Issuing Matlab commands from e-code, using the Specman command prompt to load .m files, initializing variables, and other operational tasks.* Transfering data to and from the Matlab engine to Specman / an e language test bench* Comparing data of previously retrieved Matlab arrays* Accessing Matlab arrays from e-code without converting them to e list data structure* Convert Matlab arrays into e-listsHappy coding!Team Specman Full Article
science and technology Einstein's puzzle (System Verilog) solved by Incisive92 By community.cadence.com Published On :: Fri, 20 Nov 2009 17:54:07 GMT Hello All,Following is the einstein's puzzle solved by cadence Incisive92 (solved in less than 3 seconds -> FAST!!!!!!) Thanks,Vinay HonnavaraVerification engineer at Keyu Techvinayh@keyutech.com // Author: Vinay Honnavara// Einstein formulated this problem : he said that only 2% in the world can solve this problem// There are 5 different parameters each with 5 different attributes// The following is the problem// -> In a street there are five houses, painted five different colors (RED, GREEN, BLUE, YELLOW, WHITE)// -> In each house lives a person of different nationality (GERMAN, NORWEGIAN, SWEDEN, DANISH, BRITAIN)// -> These five homeowners each drink a different kind of beverage (TEA, WATER, MILK, COFFEE, BEER),// -> smoke different brand of cigar (DUNHILL, PRINCE, BLUE MASTER, BLENDS, PALL MALL)// -> and keep a different pet (BIRD, CATS, DOGS, FISH, HORSES)///////////////////////////////////////////////////////////////////////////////////////// *************** Einstein's riddle is: Who owns the fish? ***************************////////////////////////////////////////////////////////////////////////////////////////*Necessary clues:1. The British man lives in a red house.2. The Swedish man keeps dogs as pets.3. The Danish man drinks tea.4. The Green house is next to, and on the left of the White house.5. The owner of the Green house drinks coffee.6. The person who smokes Pall Mall rears birds.7. The owner of the Yellow house smokes Dunhill.8. The man living in the center house drinks milk.9. The Norwegian lives in the first house.10. The man who smokes Blends lives next to the one who keeps cats.11. The man who keeps horses lives next to the man who smokes Dunhill.12. The man who smokes Blue Master drinks beer.13. The German smokes Prince.14. The Norwegian lives next to the blue house.15. The Blends smoker lives next to the one who drinks water.*/typedef enum bit [2:0] {red, green, blue, yellow, white} house_color_type;typedef enum bit [2:0] {german, norwegian, brit, dane, swede} nationality_type;typedef enum bit [2:0] {coffee, milk, water, beer, tea} beverage_type;typedef enum bit [2:0] {dunhill, prince, blue_master, blends, pall_mall} cigar_type;typedef enum bit [2:0] {birds, cats, fish, dogs, horses} pet_type;class Einstein_problem; rand house_color_type house_color[5]; rand nationality_type nationality[5]; rand beverage_type beverage[5]; rand cigar_type cigar[5]; rand pet_type pet[5]; rand int arr[5]; constraint einstein_riddle_solver { foreach (house_color[i]) foreach (house_color[j]) if (i != j) house_color[i] != house_color[j]; foreach (nationality[i]) foreach (nationality[j]) if (i != j) nationality[i] != nationality[j]; foreach (beverage[i]) foreach (beverage[j]) if (i != j) beverage[i] != beverage[j]; foreach (cigar[i]) foreach (cigar[j]) if (i != j) cigar[i] != cigar[j]; foreach (pet[i]) foreach (pet[j]) if (i != j) pet[i] != pet[j]; //1) The British man lives in a red house. foreach(nationality[i]) (nationality[i] == brit) -> (house_color[i] == red); //2) The Swedish man keeps dogs as pets. foreach(nationality[i]) (nationality[i] == swede) -> (pet[i] == dogs); //3) The Danish man drinks tea. foreach(nationality[i]) (nationality[i] == dane) -> (beverage[i] == tea); //4) The Green house is next to, and on the left of the White house. foreach(house_color[i]) if (i<4) (house_color[i] == green) -> (house_color[i+1] == white); //5) The owner of the Green house drinks coffee. foreach(house_color[i]) (house_color[i] == green) -> (beverage[i] == coffee); //6) The person who smokes Pall Mall rears birds. foreach(cigar[i]) (cigar[i] == pall_mall) -> (pet[i] == birds); //7) The owner of the Yellow house smokes Dunhill. foreach(house_color[i]) (house_color[i] == yellow) -> (cigar[i] == dunhill); //8) The man living in the center house drinks milk. foreach(house_color[i]) if (i==2) // i==2 implies the center house (0,1,2,3,4) 2 is the center beverage[i] == milk; //9) The Norwegian lives in the first house. foreach(nationality[i]) if (i==0) // i==0 is the first house nationality[i] == norwegian; //10) The man who smokes Blends lives next to the one who keeps cats. foreach(cigar[i]) if (i==0) // if the man who smokes blends lives in the first house then the person with cats will be in the second (cigar[i] == blends) -> (pet[i+1] == cats); foreach(cigar[i]) if (i>0 && i<4) // if the man is not at the ends he can be on either side (cigar[i] == blends) -> (pet[i-1] == cats) || (pet[i+1] == cats); foreach(cigar[i]) if (i==4) // if the man is at the last (cigar[i] == blends) -> (pet[i-1] == cats); foreach(cigar[i]) if (i==4) (pet[i] == cats) -> (cigar[i-1] == blends); //11) The man who keeps horses lives next to the man who smokes Dunhill. foreach(pet[i]) if (i==0) // similar to the last case (pet[i] == horses) -> (cigar[i+1] == dunhill); foreach(pet[i]) if (i>0 & i<4) (pet[i] == horses) -> (cigar[i-1] == dunhill) || (cigar[i+1] == dunhill); foreach(pet[i]) if (i==4) (pet[i] == horses) -> (cigar[i-1] == dunhill); //12) The man who smokes Blue Master drinks beer. foreach(cigar[i]) (cigar[i] == blue_master) -> (beverage[i] == beer); //13) The German smokes Prince. foreach(nationality[i]) (nationality[i] == german) -> (cigar[i] == prince); //14) The Norwegian lives next to the blue house. foreach(nationality[i]) if (i==0) (nationality[i] == norwegian) -> (house_color[i+1] == blue); foreach(nationality[i]) if (i>0 & i<4) (nationality[i] == norwegian) -> (house_color[i-1] == blue) || (house_color[i+1] == blue); foreach(nationality[i]) if (i==4) (nationality[i] == norwegian) -> (house_color[i-1] == blue); //15) The Blends smoker lives next to the one who drinks water. foreach(cigar[i]) if (i==0) (cigar[i] == blends) -> (beverage[i+1] == water); foreach(cigar[i]) if (i>0 & i<4) (cigar[i] == blends) -> (beverage[i-1] == water) || (beverage[i+1] == water); foreach(cigar[i]) if (i==4) (cigar[i] == blends) -> (beverage[i-1] == water); } // end of the constraint block // display all the attributes task display ; foreach (house_color[i]) begin $display("HOUSE : %s",house_color[i].name()); end foreach (nationality[i]) begin $display("NATIONALITY : %s",nationality[i].name()); end foreach (beverage[i]) begin $display("BEVERAGE : %s",beverage[i].name()); end foreach (cigar[i]) begin $display("CIGAR: %s",cigar[i].name()); end foreach (pet[i]) begin $display("PET : %s",pet[i].name()); end foreach (pet[i]) if (pet[i] == fish) $display("THE ANSWER TO THE RIDDLE : The %s has %s ", nationality[i].name(), pet[i].name()); endtask // end display endclassprogram main ; initial begin Einstein_problem ep; ep = new(); if(!ep.randomize()) $display("ERROR"); ep.display(); endendprogram // end of main Full Article
science and technology Simvision - Signal loading By community.cadence.com Published On :: Fri, 04 May 2012 04:59:11 GMT Hi all Good day.Can anyone tell me whether it is possible to view the signals once it is modified from its previous values without closing the simvision window. If possible kindly let me know the command for it(Linux). Is it possible to view the schematic for the code written?? Kindly instruct me. Thanks all.S K S Full Article
science and technology Hold violation at post P&R simulation By community.cadence.com Published On :: Mon, 08 Oct 2012 04:28:27 GMT Hello, I am working in a digital design. The functional, post synthesis and post P&R without IO pads are all working fine, i.e., functionally and with clean timing reports "no setup/hold violations". I just added the IO pads to the same design, I had to change the timing constraints a bit for the synthesis but I have a clean design at SOC Encounter, i.e., clean DRC and clean timing reports "no setup/hold violations". However, when I perform simulation using the exported net-list from SOC Encounter together with SDF exported from the same tool, I got a lot of hold violations. Consequently, the design is not funcitioning. Why and how I can overcome or trobleshoot this issue?In waiting for your feedback and comments.Regards. Full Article