Skip to main content

Posts

Showing posts from 2018

Installing AOE HD on mac

 I researched several solutions to play AOE HD on my mac. AOE II HD is only available for Windows on steam. So i searched and tried out several things to play AOE II HD on mac. Finally this is what i was able to get it working. Buy the AOE II HD on steam.  Install steam on your mac from steam web site. Create a steam account. Buy the AOE II HD packages you want. Install playonmac.  Install the playonmac from this site: https://www.playonmac.com/en/ Create a new virtual drive. Click on Configure select the virtual drive you want. Select "Install components" tab and click on "Steam". this will install steam on this virtual drive Make a shortcut from "Make a new shortcut on this virtual drive" Open steam in playonmac: Open the steam that you installed in playonmac virtual drive. Login using your steam credentials. Now steam will show your games that you have in your steam library. Setting up for installing AOE II HD. Click on inst

VCS dynamic reconfiguration for pre-compiled IPs

VCS® MX/VCS® MXi™ LCA Features Guide  >  Dynamic Reconfiguration at Runtime  >  Pre-compiled IP Use Model with Dynamic Reconfiguration at Runtime  >  Test Case Test Case In this test case, the top-level module named  top  instantiates a module named  test  with the instance names  inst_test  and a module another module named  dut  with the instance name  inst_dut . The module  dut  which instantiates twice a module named  pe_main  with the instance names  inst_pe_main1  and  inst_pe_man2 . This source file also has a substitute module named  pe_sub  as shown in the following code: //basic.v module pe_main; bit b; logic l; endmodule   module dut; pe_main inst_pe_main1(); pe_main inst_pe_main2(); bit out; endmodule   module top; dut inst_dut(); test inst_test(); endmodule     module test; initial begin #10 top.inst_dut.inst_pe_main1.b=1'b1; #10 top.inst_dut.inst_pe_main2.l=1'b1; #100 $finish(); end endmodule   module pe_sub; endmodule  

VCS dynamic reconfiguration of modules

VCS® MX/VCS® MXi™ LCA Features Guide  >  Dynamic Reconfiguration at Runtime  >  Use Model  >  Test Case Test Case In this test case, the top-level module named  top  instantiates a module named  test  twice with the instance names  test_inst  and  test_inst1 . This source file also has a substitute module named  test_sbst  as shown in the following code: // basic.v   module test(input bit bm,logic lm,output bit bto,logic lto);  endmodule   module top(); bit bt,bto,bt1; logic lt,lto,lt1;  test test_inst( .bm(bt),.lm(lt),.bto(bto),.lto(lto)); test test_inst1( .bm(bt1),.lm(lt1),.bto(bto1),.lto(lto1));  endmodule   module test_sbst(input bit bm,logic lm,                  output bit bto,logic lto); endmodule   Figure 23-2 Test Case The compile-time configuration file lists the modules whose instances you might replace along with their corresponding substitute modules. In this test case, the compile-time configuration file is named as  config.t

LSF Farm commands

To know the resource information which is supported by the bsub -R option are as follows: $> lsinfo type           String   N/A   Host type model          String   N/A   Host model status         String   N/A   Host status hname          String   N/A   Host name setnprocs     Numeric   Dec   Set the number of processors setncores     Numeric   Dec   Set the total number of cores vcs           Numeric   Dec   flexlm VCSRuntime_Net vcs_rh6       Numeric   Dec   flexlm VCSRuntime_Net mti           Numeric   Dec   flexlm Questa pcie          Numeric   Dec   flexlm pcie pci_express   Numeric   Dec   flexlm pci_express this will list out the resources which can be used with bsub -R option bsub -R "rusage[mti]" this will check if the licenses are available and then fire the job .

Some Python snippets -I

Some python snippets that can be useful. I have come up with some requirements in my scripts and searched for the solutions. The working ones are kept here for reference. Counting based on condition of dictionary values. Lets say we have a dictionary with some keys and values like this: { 'a' : 'hello' , 'b' : 'world, 'c' : 'hello' , 'd' : 'junk' } Now if you want to count number of keys that has values as "hello" Here is the snippet for it count = sum ( 1 for x in dict .values() if x == 'hello' ) This will display the count as 2. Returning keys of dictionary of sorted values. Sometimes we have to sort the dictionary with values. I have to get the list of keys in sorted order of values. This snipped does exactly that: sortedKeyList = sorted ( dict ,key= dict .get, reverse= True ) the sortedKeyList is the list of keys of dictionary where the keys are sorted based o

Linux Disk quota.. Problem of disk quota exceeded

Sometimes.. when i run some commands, I see that the command quits withe error: "Disk quota exceeded". But when i check the disk utilization using "df -h" i have pretty much space left to use. Whats the point of disk quota here. Linux administrators can set quota.. a limit for each user on how much he can fill that File system. The quota limitation if for two aspects: Total space used by user. Total number of files created by user. Lets take an example of user limits are 100GB and 10000 files.  Now for the first point, if user creates 11 files of 10 GB each, then his disk quota is exceeded.  for the second point, if user creates 12000 files of 10KB each, then total space is 120MB, but the limitation of file quota is exceeded, in this case also the disk quota is exceeded. To get user quota on different disk storages: use this command $> quota XXX.XXX.XXX.XXX:/local/------                 243220716  17179869180 17179869180          803381 

Waiting on clocking block signals

Its a good practice to use the clocking blocks for creating verification components. There are some scenarios, where you have to wait on change on some values. As an example, when DUT drives the valid signal, in monitor you wait for valid signal and then read other signal on next clock. Lets say the DUT drives a valid signals and in your monitor you have to wait till valid is high and wait for two clocks. Then in your montior, you do something like this: wait ( interface .cb.valid == 1'b1 ); @ interface .cb; @ interface .cb; What do you expect? when valid happens, then wait for two clock cycles. But this may not happen. the first wait and then @interface.cb may happen in same cycle. This is because the clocking block events are synchronous. The wait and the @() statement will execute in same delta. Instead, the best way is to use this: @(tif1.cb iff tif1.cb.data); In this way, you wait every clock only if the cb.data is high. Code: https://www.edaplayground.com