All well and good, unless you work in a company that refuses to actually purchase PC's. When they go EOL (end of lease) that's it - they disappear one night never to be seen again. (the IT dept is nice enough to copy everything in your user folder to the new hard disk, though) We are still fighting to keep an old P3 system that went EOL years ago, and that we are presumably paying penalties on, because it is the last system with a working copy of several packages we need that are no longer supported. It's kind of sad to see so many developers sharing time on what has to be the oldest PC in the department. Of course, there are always those unsuspecting lab machines that haven't ever had design tools installed on them...
Xilinx 3s8000?
Started by ●May 3, 2006
Reply by ●May 10, 20062006-05-10
Reply by ●May 10, 20062006-05-10
In article <1147203980.950132.150410@e56g2000cwe.googlegroups.com>, Jeff Brower <jbrower@signalogic.com> wrote:> Radarman- > > > We fought for a week with every part of the > > toolchain until we switched to another workstation to create the > > bitstream files - no errors, just corrupt binaries. > > I don't understand the struggle. You are violating basic usage > principles of ISE. Never a) uninstall and re-install, or b) install a > new version on the same machine as an earlier working version. The > only thing permitted on any given machine is service pack upgrades > within a version. Yes that leaves you with the "5.1 machine", the "6.1 > machine", etc. but that's the rule. Your FAE should have told you > that; it's all we've ever heard since 1999 and several different FAEs.Is that a licensing thing or a functionality thing? When I got my Spartan 3e starter kit a few days ago, I installed the included ISE 8.1 under E:\Program Files\Xilinx . When I found out that some things Do Not Work in paths that have spaces in them, I uninstalled it and re-installed it under E:\ProgramFiles\Xilinx . Have I set myself up for a lifetime of pain until I get a new computer? -- David M. Palmer dmpalmer@email.com (formerly @clark.net, @ematic.com)
Reply by ●May 10, 20062006-05-10
> Would a VM like VMWare or VPC do the trick, keep your OS with ISE > version installed in different virtual boxes. As long as only one runs > all the machine resources are available to that VM guest, whether its > Linux or Windows.Do you say that this would still run at full speed? has anyone tried this? I suspect the emulation takes quite some ressources ... bye, Michael
Reply by ●May 10, 20062006-05-10
No, it's not generally a licensing problem. It's more a problem with lousy programming, and the different versions tripping over each other. The software depends on environment variables instead of using the registry for a lot of things, and depending on which is first, you can end up calling the old version with the new version, or in my case, vice-versa. The sad thing is, Xilinx gets the rocket science (mapping and PAR) right - but screws up on the little stuff. None of these problems are endemic to Windows applications. For some reason, though, when engineering companies release software, they always ignore the spit and polish. Modeltech did it (and now that they are owned by Mentor Graphics, it's even worse). Synplicity does it - particularly with that HUGE "RUN" button and other non-standard dialogues. You would think it would be simpler to just write a decent Windows shell, a separate Unix shell, and then use portable C or C++ for the core application than to maintain all that homegrown cruft. Heck, ModelSim is actually *LESS* usable now at 6.1 than it was in 5.8! Usability aside, though - the tools don't use standard OS features that could help prevent these problems. Most applications use the registry in Windows, where it is fairly simple to setup a structure that allows for multiple versions. In Unix, it is fairly simple to keep all your configuration files in the same folder, and create Makefiles that call out which tool to use. It isn't hard. If *I* can do it, with just an average knowledge of C and almost zero C++, I suspect the developers at most of these engineering companies can do it as well.
Reply by ●May 10, 20062006-05-10
=?ISO-8859-1?Q?Michael_Sch=F6berl?= (MSchoeberl@mailtonne.de) wrote: : Do you say that this would still run at full speed? : has anyone tried this? : I suspect the emulation takes quite some ressources ... Running an x86 virtual PC on an x86 host can use virtualization where most code (non priveledged stuff etc.) runs nativly, so there is a much less significant performance hit than with emulation. You need a lot of memory though as both the host and guest OS' memory requirements must be fulfilled. Also the old tools will have been used with older, slower PCs so will get a speed bost from the modern PC which probably offsets the virtualization overhead. Where the VM aproach falls down is where you have software that is locked to some physical dongle... cds
Reply by ●May 10, 20062006-05-10
Before abandoning this thread, I thought I would cobble together a 72*72->144 multiplier using the 3s500's built-in 18*18->36 bit hardware multipliers. The result is shown below. As you can see, more slices and LUT's are required when using the built-in hardware multipliers than by the same width multiplier written in pure Verilog, *but* the frequency is also faster. Device utilization summary: --------------------------- Selected Device : 3s500epq208-4 Number of Slices: 817 out of 4656 17% Number of Slice Flip Flops: 669 out of 9312 7% Number of 4 input LUTs: 1094 out of 9312 11% Number of bonded IOBs: 18 out of 158 11% Number of MULT18X18s: 16 out of 20 80% Number of GCLKs: 1 out of 24 4% Timing Summary: --------------- Speed Grade: -4 Minimum period: 12.982ns (Maximum Frequency: 77.033MHz) Minimum input arrival time before clock: 10.583ns Maximum output required time after clock: 8.062ns Maximum combinational path delay: No path found It's a little hard to believe that the circuit design using the builtin multipliers actually requires more FPGA space than doing the whole thing in Verilog, so I've pasted the Verilog source code that I wrote to test the hardware multipliers into this message below. As you can see, the synthesizer automatically chooses to use the builtin MULT18X18s simply because I specified an 18*18 bit multiply in the Verilog code (see m36.v) without requiring me to explicitely instantiate the MULT18X18 multipliers by name. There are three modules. They are: 1. m36.v 2. m72.v 3. main.v "main.v" is a simple I/O interface for MX_72 which is the main multiplier. The only reason for having "main" is so that the synthesizer won't complain about running out of I/O pins. Let me know if you're able to cut down on the gate count significantly. I already know I could probably eliminate one or two temporary registers I used in MX_72, but doubt it would make much difference. Regards, Ron //================= m72.v ================= // m72.v, (c) May 9, 2006, Ron Dotson module MX_72 (reset,clock,a,b, r,finished); parameter N=72; // Bus Width of input parameter L=36; // Half the Bus Width parameter S0=0,S1=1,S2=2,S3=3,S4=4,S5=5,S6=6,S7=7; input reset, clock; input [N-1:0] a,b; output reg [2*N-1:0] r; output reg finished; reg resetMX; reg [1:0] state; reg [L-1:0] a1,b1, a2,b2; reg [2*N-1:0] t1,t2,t3; wire [N-1:0] r1,r2,r3,r4; wire finished1,finished2,finished3,finished4; MX_36 m1 (resetMX,clock,a1,b1, r1,finished1); MX_36 m2 (resetMX,clock,a1,b2, r2,finished2); MX_36 m3 (resetMX,clock,a2,b1, r3,finished3); MX_36 m4 (resetMX,clock,a2,b2, r4,finished4); always @(posedge clock) if (reset==1) begin finished<= 0; resetMX<= 0; a2<= a[N-1:L]; // MSB a a1<= a[L-1:0]; // LSB a b2<= b[N-1:L]; // MSB b b1<= b[L-1:0]; // LSB b t1<= 0; t2<= 0; t3<= 0; state<= S0; end else begin case (state) S0: begin resetMX<= 1; state<= S1; end S1: begin resetMX<= 0; state<= S2; end S2: begin if (finished1 & finished2 & finished3) begin t1[N-1:0]<= r1; t1[2*N-1:N]<= r1[N-1]? -1: 0; // extend sign t2[2*N-1:L]<= r2 + r3; t3[2*N-1:N]<= r4; state<= S3; end end S3: begin r<= t1 + t2 + t3; finished<= 1; end endcase end endmodule //================= m26.v ================= // m36.v, (c) May 9, 2006, Ron Dotson module MX_36 (reset,clock,a,b, result,finished); parameter N=36; // Bus Width of input input reset, clock; input [N-1:0] a, b; output reg [2*N-1:0] result; output reg finished; always @(posedge clock) if (reset==1) begin finished<= 0; end else begin result<= a*b; // instantiates builtin h/w multiplier finished<= 1; end endmodule //================= main ================= // main.v, I/O interface // (c) Jan 14, 2006, Ron Dotson // Note: Need bus-width of 576 bits to solve "Most Wanted" // Cunningham numbers at: // http://homes.cerias.purdue.edu/~ssw/cun/want97 // // SW2= A19(1) = resetMain Expected Was // D1 = G1(7)= Led0 (~LD0) X X D1 // D2 = G2(7)= Led1 (~LD1) X 0 D2 // D3 = H1(7)= Led2 1 1 D3 // D4 = H2(7)= Led3 (Data bit 0) 1 1 D4 // D5 = J1(7)= Led4 (Data bit 1) 1 1 D5 // D6 = J2(7)= Led5 (Data bit 2) 0 0 D6 // D7 = K1(7)= Led[6] 1 1 D7 // D8 = K2(7)= Led[7] 1 1 D8 module main(resetMain,clock,Sw[7:0], Led[7:0]); parameter N=72; // Bus Width of input parameter L=36; // Half the Bus Width parameter S0=0,S1=1,S2=2,S3=3; input resetMain, clock; input [7:0] Sw; output reg [7:0] Led; reg mReset; reg [1:0] state; reg [N-1:0] a,b; wire [2*N-1:0] r; // 72*72->144 wire finished, LD1,LD0; MX_72 mx72 (mReset,clock,a,b, r,finished); always @(posedge clock) if (~resetMain) // SW2 = Low when pressed begin mReset<= 1; Led[7:0]<= -1; // Leds OFF state<= S0; // a<= 17; b<= 13; // Test Case 1 // a<= 137; b<= 223; // Test Case 2 // a<= 157; b<=223; // Test Case 3 // a<= 33013; b<= 35023; // Test Case 4 // Test Case 5 a[ 71: 64]<= 8'hA9; a[ 63: 32]<= 32'h7B78BE29; a[ 31: 0]<= 32'h9C540469; b[ 71: 64]<= 8'h9B; b[ 63: 32]<= 32'hE4BB0E99; b[ 31: 0]<= 32'h19425200; end else begin case (state) S0: begin mReset<= 1; Led[2]<=1; // OFF state<= S1; end S1: begin if (mReset) mReset<= 0; else begin Led[2]<= ~Led[2]; Led[0]<= ~LD0; Led[1]<= ~LD1; if (finished) begin state<= S2; // Solved end end end S2: begin if (Sw[7]) // On=Up begin Led[0]<= ~LD0; // D1 Led[1]<= ~LD1; // D2 Led[2]<= 0; // D3= ON Led[3]<= ~r[0]; // D4 (Data bit 0) Led[4]<= ~r[1]; // D5 (Data bit 1) Led[5]<= ~r[2]; // D6 (Data bit 2) Led[6]<= 0; Led[7]<= 0; // finished. Turn on Led D8 end else begin case (Sw[5:0]) 0: begin Led<= ~r[7:0]; end 1: begin Led<= ~r[15:8]; end 2: begin Led<= ~r[23:16]; end 3: begin Led<= ~r[31:24]; end 4: begin Led<= ~r[39:32]; end 5: begin Led<= ~r[47:40]; end 6: begin Led<= ~r[55:48]; end 7: begin Led<= ~r[63:56]; end 8: begin Led<= ~r[71:64]; end 9: begin Led<= ~r[79:72]; end 10: begin Led<= ~r[87:80]; end 11: begin Led<= ~r[95:88]; end 12: begin Led<= ~r[103:96]; end 13: begin Led<= ~r[111:104]; end 14: begin Led<= ~r[119:112]; end 15: begin Led<= ~r[127:120]; end 16: begin Led<= ~r[135:128]; end 17: begin Led<= ~r[143:136]; end default: begin Led<= -1; // all OFF end endcase end end endcase end endmodule
Reply by ●May 10, 20062006-05-10
radarman wrote:> No, it's not generally a licensing problem. It's more a problem with > lousy programming, and the different versions tripping over each other. > The software depends on environment variables instead of using the > registry for a lot of things, and depending on which is first, you can > end up calling the old version with the new version, or in my case, > vice-versa.Or you can move the environment variables into bat files, as I did several years back before the linux tools became usable (hosting WebPack and ISE 4.2 on WinMe): # cat Xilinx4K.bat SET PATH=C:\Xilinx4K\bin\nt;%PATH% SET XILINX=C:\Xilinx4K C:\Xilinx4K\bin\nt\ise.exe # cat XilinxFdn4.bat SET PATH=C:\XilinxFdn4\bin\nt;%PATH% SET XILINX=C:\XilinxFdn4 C:\XilinxFdn4\bin\nt\dsgnmgr.exe I assume that is still possible today?
Reply by ●May 10, 20062006-05-10
c d saunter wrote:> =?ISO-8859-1?Q?Michael_Sch=F6berl?= (MSchoeberl@mailtonne.de) wrote: > > : Do you say that this would still run at full speed? > : has anyone tried this? >No reason to try it myself, also the cost of VM servers used to be prohibitive for play use but the VMWare scene has changed alot with free guest VMs.> : I suspect the emulation takes quite some ressources ... > > Running an x86 virtual PC on an x86 host can use virtualization where most > code (non priveledged stuff etc.) runs nativly, so there is a much less > significant performance hit than with emulation. > > You need a lot of memory though as both the host and guest OS' memory > requirements must be fulfilled. >I wonder if there would be some advantage to running Windows Vm boxes on Linux rather than on WIndows host, or vice versa for memory advantages or to satisfy OS preference while using EDA tool with the vendor supported OS.> Also the old tools will have been used with older, slower PCs so will get > a speed bost from the modern PC which probably offsets the virtualization > overhead. > > Where the VM aproach falls down is where you have software that is locked > to some physical dongle... >Indeed but I am sure that other VM users must be using protected software licenses too so same solution at hand, probably network license. Still its more work to insert another layer. FWIW alot of VM issues get discussed on OSNews since all the vendors are constantly in the news.> cds
Reply by ●May 11, 20062006-05-11
Ron, I was cleaning out one of the labs yesterday and I came by a box topped with much dust. I brushed it off and came across some Xilinx devices. XC4005-5PG156C XCS40-3PQ208C I immediately thought of you, as this thread has been indelibly etched into my mind, due to all the colorful and enlightening dialogue. I have no use for these items, and if Xilinx doesn't see anything wrong with me giving a couple to you, I could then mail them. Rob Ron wrote:> Glory and riches are showered upon those who successfully factor one of > the RSA Challenge Numbers (see note [1]) ;-). I would like to be the > first to factor an RSA number using a standalone FPGA development > board(s) (ie; not connected to a conventional computer). > > The RSA Challenge numbers have traditionally been solved by networks of > supercomputers using a distributed Number Field Sieve (NFS) or similar > method. Sieving is unfortunately not suited to FPGA implementation, but > there is another integer factorization method called the Elliptic Curve > Method (ECM, see note [3]) that I think might stand a chance of cracking > RSA-704. I have therefore designed and tested a Verilog implementation > of ECM with a compile time bus-width specification (ie; `define L 704) > so that it's easy to determine how the LUT requirement increases as I > change the bus width. I've optimized the circuit for gate count to the > extent of multiplexing everything that is used more than once (multiply, > divide, modulo, etc) - a process that almost brought tears to my eyes at > one point, because I had to eliminate several areas that naturally lent > themselves to parallelization. > > Even so, the design requires far more LUTs than are currently available > from anyone as far as I know. I presently have Xilinx xc3s500e and Actel > ProASIC3E A3PE600 development boards, but I can't compile the design for > a 704 bit bus-width because I get the error message in Note [4] below (I > also get a similar message from the Actel synthesizer). I *can* compile > the design for a 384 bus-width however. Using a Xilinx 3s4000 as the > target device (even though I only have a 3s500) with a 384 bit > bus-width, I get the following Device utilization summary: > --------------------------- > Selected Device : 3s4000fg676-4 > Number of Slices: 49176 out of 27648 177% (*) > Number of Slice Flip Flops: 52253 out of 55296 94% > Number of 4 input LUTs: 83797 out of 55296 151% (*) > Number of bonded IOBs: 18 out of 489 3% > Number of GCLKs: 1 out of 8 12% > WARNING:Xst:1336 - (*) More than 100% of Device resources are used > --------------------------- > > > This would lead me to believe that my design would require at least > 101,376 LUTs, and probably more depending on how much of the FPGA is > consumed by routing. Since the Xilinx 3s4000 has 55296 LUTs and 27648 > slices, I imagine a part with twice that number of slices & LUTs (a > Xilinx 3s8000 perhaps?) would be needed to fit my design. Anyone care to > hazard a guess as to if/when such a monster might be available? > > Also, thus far the longest number that has been factored with ECM is > only 66 decimal digits (see Note [3]). If RSA-704 (212 decimal digits) > were factored, it would set a new record for ECM factoring also. > > If such a device did become available, my only hope for acquiring the > requisite hardware/software would be to work out a deal with the FPGA > vendor or someone to lend me the necessary development board and s/w > tools in exchange for the potential fame and glory, since I am but a > humble retired engineer/hobbyist. :-) > > Ron > > > _________________ > Notes: > > [1] RSA Challenge Numbers: > http://www.rsasecurity.com/rsalabs/node.asp?id=2093 > > [2] Factoring Methods: > http://mathworld.wolfram.com/PrimeFactorizationAlgorithms.html > > [3] Elliptic Curve Factorization Method > http://mathworld.wolfram.com/EllipticCurveFactorizationMethod.html > > [4] When synthesizing ECM with a 704 bit bus-width for the Xilinx > xc3s4000-4fg676, I get: > > ERROR: Portability:3 - This Xilinx application has run out of memory or > has encountered a memory conflict. Current memory usage is 2092148 kb. > Memory problems may require a simple increase in available system > memory, or possibly a fix to the software or a special workaround. To > troubleshoot or remedy the problem, first: Try increasing your system's > RAM. Alternatively, you may try increasing your system's virtual memory > or swap space. If this does not fix the problem, please try the > following: Search the Answers Database at support.xilinx.com to locate > information on this error message. If neither of the above resources > produces an available solution, please use Web Support to open a case > with Xilinx Technical Support off of support.xilinx.com. As it is > likely that this may be an unforeseen problem, please be prepared to > submit relevant design files if necessary. > ERROR: XST failed > Process "Synthesize" did not complete.
Reply by ●May 11, 20062006-05-11
robnstef@frontiernet.net wrote:> I have no use for these items, and if Xilinx doesn't see anything wrong > with me giving a couple to you, I could then mail them.I sincerely appreciate the offer Rob, but unless I'm missing something the devices you mention are older and consequently smaller devices than I really need. I'm looking to target one of the larger vendors devices on a hobbyist budget, and my primary obstacle is the high cost of the design software rather than the FPGAs and development boards themselves. Thanks to John Bass's earlier suggestion about ebay, the cost of the hardware is no longer much of an issue, but if you ever happen to run across an old dusty box labeled "Xilinx ISE Foundation," "Actel Libero Platninum", "Altera Quartus II Standard Edition," or even Lattice Semiconductor's full version of ispLEVER that hasn't yet been "activated", I would surely appreciate a copy of it. Regards, Ron





