Thursday, 28 August 2008

Cadence Physically Knowledgeable Synthesis on solaris

Running a very old version of cadence pks_shell I decided to play about a bit with the configuration of the two old sun E3500's. Basically the systems are old 6 processor UltraSPARC II's and I had split the memory between them evenly. This turned out to be a very silly thing to do! It meant I didn't take advantage of the fantastically wide interleave available: If I install 4 lots of 1GB then I get a 4 way interleave quadrupling the memory bandwidth. So I am timing the compile again. Unfortunately our Cadence licensing doesn't allow me to share benchmark information, but it is surprisingly quicker.

Thursday, 21 August 2008

Final flow looking better already: Cadence rc

After a lot of checking about it seems SoC Encounter comes with its own RTL compiler which is a lot more modern than our installed version of PKS. It also looks like a lot of the functionality of PKS was pushed into encounter which is the sensible place for it to be. When laying out a modern SoC with IP blocks, analogue and RTL it makes sense to do the floorplanning, clock tree balancing and reordering all in one tool.

Wednesday, 20 August 2008

Converting Libraries for use in Cadence PKS

Our designkits (which shall remain unspecified except that you can get some of them from CMP) mainly support Synopsys tools. However we have limited licenses for Design Compiler so to use them in Cadence PKS you can use a nifty little program called syn2tlf. This converts .lib files to .tlf, used by Cadence PKS. What I don't yet know is how to check that the conversion is anywhere near sane.

Wednesday, 13 August 2008

STmicroelectronic 65nm, 65nm SOI and 45nm Design Kit NDA's Signed

Never underestimate the time it takes to sign a legal commitment! Finally I found the right person who was able to sign for the University binding us to not revealing secrets and accepting liabilities such that I can now receive the STMicroelectronic Design Kits (Cadence calls them PDK's) from CMP for their 65nm, 65nm SOI and 45nm CMOS processes.

Now to develop several flows including various verification strategies and frontends (Synopsys' Designware, Cadence IC, PrimeTime, etc).

DATE09 TPC Meeting on Wednesday, November the 5th

The DATE09 (Design, Automation and Test in Europe) TPC (Technical Program Committee) meeting is going to be held at the awesome IET building, Savoy Place, London this year. Wednesday the 5th of November to be precise. For full details refer to the DATE09 TPC website,

Tuesday, 12 August 2008

Update to AHB Slave Shenanigans and Massive Modelsim Migranes

AHB Slave Shenanigans: The HREADY signal is supposed to be an input from all the other AHB slaves such that they all can note that a slave is hanging the master.

Massive Modelsim Migranes: After a lot of messing about I found out the following solution (for 64 bit linux on amd64 and intel amd64 ext systems):

libhm = $MODEL_TECH/../linux_x86_64/

instead of the line in step 4 of this article from Xilinx. This applies to Modelsim SE 6.3f and the Rocket IO (or Rocket I/O?) module called MGT internally and the SmartModel SWIFT models included in Xilinx ISE9.2i.

Thursday, 7 August 2008

UK DVB Channel Numbers for MythDora 5

Mythtv, for those who don't know, is a very powerful, flexible, PVR tweakers paradise which can be run on top of an existing linux OS or from one of the customised distributions available. The new version of Mythdora, 5, has a really irritating problem: using UK freeview DVB-T it doesn't assign channel numbers as you would expect. So to the rescue is a small mysql script to do just that. The channel numbers come from the awesome DigitalSpy website, one of the best collections of information on transmitted media I have ever come across.


USE mythconverg;
UPDATE channel SET channum=1 WHERE name='BBC ONE';
UPDATE channel SET channum=2 WHERE name='BBC TWO';
UPDATE channel SET channum=3 WHERE name='ITV1';
UPDATE channel SET channum=4 WHERE name='Channel 4';
UPDATE channel SET channum=5 WHERE name='Five';
UPDATE channel SET channum=6 WHERE name='ITV2';
UPDATE channel SET channum=7 WHERE name='BBC THREE';
UPDATE channel SET channum=9 WHERE name='BBC FOUR';
UPDATE channel SET channum=10 WHERE name='ITV3';
UPDATE channel SET channum=11 WHERE name='SKY THREE';
UPDATE channel SET channum=12 WHERE name='UKTV History';
UPDATE channel SET channum=13 WHERE name='Channel 4+1';
UPDATE channel SET channum=14 WHERE name='More 4';
UPDATE channel SET channum=16 WHERE name='QVC';
UPDATE channel SET channum=18 WHERE name='The HITS';
UPDATE channel SET channum=19 WHERE name='Dave';
UPDATE channel SET channum=20 WHERE name='Virgin1';
UPDATE channel SET channum=21 WHERE name='TMF';
UPDATE channel SET channum=22 WHERE name='Ideal World';
UPDATE channel SET channum=23 WHERE name='bid tv';
UPDATE channel SET channum=24 WHERE name='price-drop tv';
UPDATE channel SET channum=28 WHERE name='ITV4';
UPDATE channel SET channum=29 WHERE name='E4';
UPDATE channel SET channum=30 WHERE name='E4+1';
UPDATE channel SET channum=31 WHERE name='ITV2 +1';
UPDATE channel SET channum=32 WHERE name='Film4';
UPDATE channel SET channum=34 WHERE name='SETANTA SPORTS';
UPDATE channel SET channum=35 WHERE name='Five US';
UPDATE channel SET channum=36 WHERE name='FIVER';
UPDATE channel SET channum=37 WHERE name='smileTV';
UPDATE channel SET channum=42 WHERE name='Nuts TV';
UPDATE channel SET channum=43 WHERE name='Gems TV';
UPDATE channel SET channum=44 WHERE name='GEMSTV1';
UPDATE channel SET channum=45 WHERE name='Lottery Xtra';
UPDATE channel SET channum=61 WHERE name='TVX / REDHOT';
UPDATE channel SET channum=70 WHERE name='CBBC Channel';
UPDATE channel SET channum=71 WHERE name='CBeebies';
UPDATE channel SET channum=75 WHERE name='CITV';
UPDATE channel SET channum=80 WHERE name='BBC NEWS';
UPDATE channel SET channum=81 WHERE name='BBC Parliament';
UPDATE channel SET channum=82 WHERE name='Sky News';
UPDATE channel SET channum=83 WHERE name='Sky Spts News';
UPDATE channel SET channum=87 WHERE name='Community';
UPDATE channel SET channum=88 WHERE name='Teachers TV';
UPDATE channel SET channum=100 WHERE name='Teletext';
UPDATE channel SET channum=101 WHERE name='Ttext Holidays';
UPDATE channel SET channum=102 WHERE name='Rabbit';
UPDATE channel SET channum=103 WHERE name='TeletextCasino';
UPDATE channel SET channum=104 WHERE name='Teletext on 4';
UPDATE channel SET channum=105 WHERE name='BBCi';
UPDATE channel SET channum=108 WHERE name='Sky Text';
UPDATE channel SET channum=300 WHERE name='4TVinteractive';
UPDATE channel SET channum=301 WHERE name='301';
UPDATE channel SET channum=302 WHERE name='302';
UPDATE channel SET channum=303 WHERE name='303';
UPDATE channel SET channum=304 WHERE name='tvtv DIGITAL';
UPDATE channel SET channum=305 WHERE name='305';
UPDATE channel SET channum=700 WHERE name='BBC Radio 1';
UPDATE channel SET channum=701 WHERE name='1Xtra BBC';
UPDATE channel SET channum=702 WHERE name='BBC Radio 2';
UPDATE channel SET channum=703 WHERE name='BBC Radio 3';
UPDATE channel SET channum=704 WHERE name='BBC Radio 4';
UPDATE channel SET channum=705 WHERE name='BBC R5 Live';
UPDATE channel SET channum=706 WHERE name='BBC 5L SportsX';
UPDATE channel SET channum=707 WHERE name='BBC 6 Music';
UPDATE channel SET channum=708 WHERE name='BBC 7';
UPDATE channel SET channum=709 WHERE name='BBC Asian Net.';
UPDATE channel SET channum=710 WHERE name='BBC World Sv.';
UPDATE channel SET channum=711 WHERE name='The Hits Radio';
UPDATE channel SET channum=712 WHERE name='Smash Hits\!';
UPDATE channel SET channum=713 WHERE name='Kiss';
UPDATE channel SET channum=714 WHERE name='heat';
UPDATE channel SET channum=715 WHERE name='Magic';
UPDATE channel SET channum=716 WHERE name='Q';
UPDATE channel SET channum=718 WHERE name='SMOOTH RADIO';
UPDATE channel SET channum=721 WHERE name='MOJO';
UPDATE channel SET channum=722 WHERE name='Kerrang\!';
UPDATE channel SET channum=723 WHERE name='talkSPORT';
UPDATE channel SET channum=724 WHERE name='Clyde 1';
UPDATE channel SET channum=725 WHERE name='Premier Radio';
UPDATE channel SET channum=727 WHERE name='Virgin Radio';
UPDATE channel SET channum=728 WHERE name='Heart';

To use it cut and paste the SQL into a text file called channel_num_fix.sql. Then run as root:

/etc/init.d/mythbackend stop
mysql -u mythtv -p < channel_num_fix.sql
/etc/init.d/mythbackend start

2 Potential warnings here: Firstly I get you to stop the backend. I am uncertain that is necessary, however on your own head be it. Also if you have channels not listed I would ensure they are not assigned to a channel number that one of the above channel's want. I don't know what would happen, perhaps nothing bad as each channel has a unique ID as well as its number.

Wednesday, 6 August 2008

AHB Slave Shenanigans and Massive Modelsim Migranes

Setting up and running an ARM AMBA bus is not too tricky, and it is quite a neat standard. However in this case my student seems to have copied a rather cunning implementation from Gaisler Research's GRLIB. However the AMBA standard document seems to be rather inconsistent one one point: The HREADY signal is defined to be an input and an output for all AHB slaves, but for the life of me I can't find another mention of it, nor does it seem sensible. I shall consult Prof Flynn who is working here, as he developed AMBA and has worked with it for many years. If you are thinking of making your own GPL'ed AHB slave look no further than the Gaisler Research ahbram.vhd.

Modelsim and smartmodels (specifically the Rocket IO, MGT smartmodel). Good grief, this is a non-trivial procedure. Compile the models, install the models then make lots of opaque changes to the modelsim.ini file and it still doesn't work! Don't know why yet, but will post when I do.

Monday, 4 August 2008

I'm getting a Virtex-5 ML505

Which, to me is great news. Up till now I have been using the excellent Xilinx XUP board however it has one real failing: the ports labelled SATA on the XUP are not capable of talking to SATA devices. They don't support Out Of Band signalling.

The Virtex-5 LXT based ML505 however does support the full SATA specification, as well as a lot of others besides. The reason is more advanced Rocket IO ports.