The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl Simulators >> AMS Simulators >> E2L convert one analog rising edge into two edges in digital domain https://designers-guide.org/forum/YaBB.pl?num=1316182491 Message started by ywguo on Sep 16th, 2011, 7:14am |
Title: E2L convert one analog rising edge into two edges in digital domain Post by ywguo on Sep 16th, 2011, 7:14am Hi Guys, I simulate a verilog model for divider-by-2. The input signal is vpulse in analogLib. An E2L connect module is inserted automatically. I found that the output is weird. Sometimes there are very very narrow pulses at the output, sometimes there are not any pulse. The pulse width is equal to delta T defined by timescale, for example, 100ps. The verilog code for divider-by-2 is shown below. The input clock signal mclk_150k is monitored with display task. Code:
The simulation log file reveals that there are two rising edges in digital domain at the analog rising edge. Code:
The tools version are ic 5.1.41 isr20100624, mmsim 07.20.194, and ius 09.20.s008. What's wrong with my model? Any comments are appreciated. Yawei |
Title: Re: E2L convert one analog rising edge into two edges in digital domain Post by boe on Sep 16th, 2011, 8:29am Ywguo, First of all, mmsim 07.20.194 is fairly old. Did you try a recent version? I checked the code of the standard E2L module and it seemed OK, so perhaps a simulator bug? However, a few additional ideas: What parameters do you use for in your connect rules? Which rules do you use? Is supply present? B O E |
Title: Re: E2L convert one analog rising edge into two edges in digital domain Post by ywguo on Sep 18th, 2011, 6:39am Hi B O E, I don't think that has nothing to do with mmsim. Anyway, I tried mmsim 10.11.056 in the morning. It seems that is related to my E2L module. It is not the standard E2L module in IUS. But it is very similar. I will update asap. Thanks Yawei |
Title: Re: E2L convert one analog rising edge into two edges in digital domain Post by ywguo on Sep 18th, 2011, 9:45pm Hi, A vpulse signal was fed to clock signal of div2, the rise time and fall time are 1ns. The output of E2L_2_inhconn module became x and 1 almost simultaneously at the rise edge of analog voltage pulse. Unfortunately, ncsim regards that 0 -> X as posedge. So the divider by 2 goes up and down. No pulse is visible or there are very very narrow pulse. The width is determined by delta T defined by timescale. I looked into this E2L_2_inhconn.vams file and E2L_2_inhconn.vams file in IUS installation directory. The have minor differences, but I think they shall have the same function. However, if I replace myconnectLib with connectLib in IUS installation directory, everything works fine. There are not any X. The delay to find out X are 0.8ns in both E2L_2_inhconn module. So I think 1ns rise time and fall time is sharp enough to avoid X. But it fails for myConnectlib and works for connectLib in IUS install directory. The following is part of my E2L_2_inhConn module. Code:
|
Title: Re: E2L convert one analog rising edge into two edges in digital domain Post by ywguo on Sep 18th, 2011, 9:57pm The following is part of the simulation log and the waveform, where mclk_150k is clock input, and clk_cic is the output of div-by-2. Code:
|
Title: Re: E2L convert one analog rising edge into two edges in digital domain Post by ywguo on Sep 18th, 2011, 10:07pm After the rise/fall time of mclk_150k was reduced to 0.1ns, divider-by-2 works. The following is part of simulation log and waveforms. Code:
|
Title: Re: E2L convert one analog rising edge into two edges in digital domain Post by ywguo on Sep 19th, 2011, 6:53pm Now I figure out the cause of that problem. The values are reloaded in ConnRules_inhconn.vams. In the built-in connectLib, Tr is 0.4ns, txdel is 1.6ns. But in my connectLib, tr is 0.04ns and txdel is 0.16ns. The following is copied from the built in connectLib. `define Tr 0.4n `define DelayX `Tr*4 ... ... connect E2L_2_inhconn #( .vsup_min(`VsupMin), .vthi(`Vthi), .vtlo(`Vtlo), .tr(`Tr), .tf(`Tr), .txdel(`DelayX) ); The following is copied from my connectLib. `define Trcmos 0.04n `define Trcml 0.02n ... ... connect E2L_2_inhconn #( .vthi(`Vthi), .vtlo(`Vtlo), .tr(`Trcmos) ); Best Regards, Yawei |
The Designer's Guide Community Forum » Powered by YaBB 2.2.2! YaBB © 2000-2008. All Rights Reserved. |