<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.elphel.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Okdzhimiev</id>
	<title>ElphelWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.elphel.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Okdzhimiev"/>
	<link rel="alternate" type="text/html" href="https://wiki.elphel.com/wiki/Special:Contributions/Okdzhimiev"/>
	<updated>2026-08-18T15:29:20Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3569</id>
		<title>10359 FPGA Simulation</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3569"/>
		<updated>2008-03-04T22:05:16Z</updated>

		<summary type="html">&lt;p&gt;Okdzhimiev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main page for the board is [[10359]].&lt;br /&gt;
&lt;br /&gt;
==Verification==&lt;br /&gt;
1. Channel 3 simulation:&lt;br /&gt;
* DDR initialization through i2c - done.&lt;br /&gt;
* write to DDR - done.&lt;br /&gt;
* read from DDR - done.&lt;br /&gt;
&lt;br /&gt;
2. PHASE_SHIFT in DCM is not available currently, because the model had bad constructs, but SDCLK(SDNCLK) can be controlled by &amp;quot;phsel&amp;quot;.&lt;br /&gt;
 For correct writing/reading from DDR in model set phsel=&amp;quot;01&amp;quot; (register=0x1008, value=0x00000004).&lt;br /&gt;
&lt;br /&gt;
           ==Board tests==&lt;br /&gt;
1. I2c check&lt;br /&gt;
 a. It doesn&#039;t work when assemled with mcontr and 2 DCMs.&lt;br /&gt;
 b. Started from the beginning. Works.&lt;br /&gt;
 c. Checked i2c four read with 1 start. Works fine.&lt;br /&gt;
 d. Adding DCMs.&lt;br /&gt;
&lt;br /&gt;
2. Check BRAM read/write. All&#039;s fine&lt;br /&gt;
&lt;br /&gt;
3. Check DDR read/write. Some problems. not solved&lt;br /&gt;
&lt;br /&gt;
4. Three different boards operate identically: BRAM - ok, DDR - not&lt;br /&gt;
        a. not marked 359&lt;br /&gt;
           acquired data is 0x05020306&lt;br /&gt;
           acquired data is 0x05060706&lt;br /&gt;
           acquired data is 0x090a0b16&lt;br /&gt;
           acquired data is 0x0d0e1f16&lt;br /&gt;
           acquired data is 0x11121316&lt;br /&gt;
           acquired data is 0x15161716&lt;br /&gt;
           acquired data is 0x191a1b06&lt;br /&gt;
           acquired data is 0x1d1e0f26&lt;br /&gt;
           acquired data is 0x21222326&lt;br /&gt;
           acquired data is 0x25262726&lt;br /&gt;
           acquired data is 0x292a2b36&lt;br /&gt;
           acquired data is 0x2d2e3f36&lt;br /&gt;
           acquired data is 0x31323336&lt;br /&gt;
           acquired data is 0x35363736&lt;br /&gt;
           acquired data is 0x393a3b26&lt;br /&gt;
           acquired data is 0x3d3e2f46&lt;br /&gt;
&lt;br /&gt;
        b. yellow circle marked 359&lt;br /&gt;
           acquired data is 0x01020306&lt;br /&gt;
           acquired data is 0x05060706&lt;br /&gt;
           acquired data is 0x090a0b16&lt;br /&gt;
           acquired data is 0x0d0e1f16&lt;br /&gt;
           acquired data is 0x11121316&lt;br /&gt;
           acquired data is 0x15161716&lt;br /&gt;
           acquired data is 0x191a1b06&lt;br /&gt;
           acquired data is 0x1d1e0f26&lt;br /&gt;
           acquired data is 0x21222326&lt;br /&gt;
           acquired data is 0x25262726&lt;br /&gt;
           acquired data is 0x292a2b36&lt;br /&gt;
           acquired data is 0x2d2e3f36&lt;br /&gt;
           acquired data is 0x31323336&lt;br /&gt;
           acquired data is 0x35363736&lt;br /&gt;
           acquired data is 0x393a3b26&lt;br /&gt;
           acquired data is 0x3d3e2f46&lt;br /&gt;
&lt;br /&gt;
==Understanding how 353&#039;s mcontr works==&lt;br /&gt;
02/28/08:&lt;br /&gt;
15:04&lt;br /&gt;
for mode=0 ( 8 - burst length)&lt;br /&gt;
 TileX - number of (32x8) blocks&lt;br /&gt;
 Seq_par(or Param) - the last write block length - (Seq_par)x8&lt;br /&gt;
 TileY - number of TileX&lt;br /&gt;
 All this starts from StartAddress&lt;/div&gt;</summary>
		<author><name>Okdzhimiev</name></author>
	</entry>
	<entry>
		<id>https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3568</id>
		<title>10359 FPGA Simulation</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3568"/>
		<updated>2008-03-04T21:59:36Z</updated>

		<summary type="html">&lt;p&gt;Okdzhimiev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main page for the board is [[10359]].&lt;br /&gt;
&lt;br /&gt;
==Verification==&lt;br /&gt;
1. Channel 3 simulation:&lt;br /&gt;
* DDR initialization through i2c - done.&lt;br /&gt;
* write to DDR - done.&lt;br /&gt;
* read from DDR - done.&lt;br /&gt;
&lt;br /&gt;
2. PHASE_SHIFT in DCM is not available currently, because the model had bad constructs, but SDCLK(SDNCLK) can be controlled by &amp;quot;phsel&amp;quot;.&lt;br /&gt;
 For correct writing/reading from DDR in model set phsel=&amp;quot;01&amp;quot; (register=0x1008, value=0x00000004).&lt;br /&gt;
&lt;br /&gt;
           ==Board tests==&lt;br /&gt;
1. I2c check&lt;br /&gt;
 a. It doesn&#039;t work when assemled with mcontr and 2 DCMs.&lt;br /&gt;
 b. Started from the beginning. Works.&lt;br /&gt;
 c. Checked i2c four read with 1 start. Works fine.&lt;br /&gt;
 d. Adding DCMs.&lt;br /&gt;
&lt;br /&gt;
2. Check BRAM read/write. All&#039;s fine&lt;br /&gt;
&lt;br /&gt;
3. Check DDR read/write. Some problems. not solved&lt;br /&gt;
&lt;br /&gt;
4. Three different boards operate identically: BRAM - ok, DDR - not&lt;br /&gt;
        a. not marked 359&lt;br /&gt;
           acquired data is 0x05020306&lt;br /&gt;
           acquired data is 0x05060706&lt;br /&gt;
           acquired data is 0x090a0b16&lt;br /&gt;
           acquired data is 0x0d0e1f16&lt;br /&gt;
           acquired data is 0x11121316&lt;br /&gt;
           acquired data is 0x15161716&lt;br /&gt;
           acquired data is 0x191a1b06&lt;br /&gt;
           acquired data is 0x1d1e0f26&lt;br /&gt;
           acquired data is 0x21222326&lt;br /&gt;
           acquired data is 0x25262726&lt;br /&gt;
           acquired data is 0x292a2b36&lt;br /&gt;
           acquired data is 0x2d2e3f36&lt;br /&gt;
           acquired data is 0x31323336&lt;br /&gt;
           acquired data is 0x35363736&lt;br /&gt;
           acquired data is 0x393a3b26&lt;br /&gt;
           acquired data is 0x3d3e2f46&lt;br /&gt;
&lt;br /&gt;
        b. yellow circle marked 359&lt;br /&gt;
           acquired data is 0xfbdfdbf6&lt;br /&gt;
           acquired data is 0xfe71bff6&lt;br /&gt;
           acquired data is 0xf7d57f76&lt;br /&gt;
           acquired data is 0x1d9bfde6&lt;br /&gt;
           acquired data is 0xffecefe6&lt;br /&gt;
           acquired data is 0xf7fc7de6&lt;br /&gt;
           acquired data is 0xbbb63fe6&lt;br /&gt;
           acquired data is 0xddd6def6&lt;br /&gt;
           acquired data is 0xbff37ba6&lt;br /&gt;
           acquired data is 0x3f7ffff6&lt;br /&gt;
           acquired data is 0xffbcbf76&lt;br /&gt;
           acquired data is 0xbfffff66&lt;br /&gt;
           acquired data is 0xfdfd79e6&lt;br /&gt;
           acquired data is 0x77ef39c6&lt;br /&gt;
           acquired data is 0xfffbbfd6&lt;br /&gt;
           acquired data is 0xbb8bfb96&lt;br /&gt;
&lt;br /&gt;
==Understanding how 353&#039;s mcontr works==&lt;br /&gt;
02/28/08:&lt;br /&gt;
15:04&lt;br /&gt;
for mode=0 ( 8 - burst length)&lt;br /&gt;
 TileX - number of (32x8) blocks&lt;br /&gt;
 Seq_par(or Param) - the last write block length - (Seq_par)x8&lt;br /&gt;
 TileY - number of TileX&lt;br /&gt;
 All this starts from StartAddress&lt;/div&gt;</summary>
		<author><name>Okdzhimiev</name></author>
	</entry>
	<entry>
		<id>https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3567</id>
		<title>10359 FPGA Simulation</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3567"/>
		<updated>2008-03-04T20:54:12Z</updated>

		<summary type="html">&lt;p&gt;Okdzhimiev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main page for the board is [[10359]].&lt;br /&gt;
&lt;br /&gt;
==Verification==&lt;br /&gt;
1. Channel 3 simulation:&lt;br /&gt;
* DDR initialization through i2c - done.&lt;br /&gt;
* write to DDR - done.&lt;br /&gt;
* read from DDR - done.&lt;br /&gt;
&lt;br /&gt;
2. PHASE_SHIFT in DCM is not available currently, because the model had bad constructs, but SDCLK(SDNCLK) can be controlled by &amp;quot;phsel&amp;quot;.&lt;br /&gt;
 For correct writing/reading from DDR in model set phsel=&amp;quot;01&amp;quot; (register=0x1008, value=0x00000004).&lt;br /&gt;
&lt;br /&gt;
==Board tests==&lt;br /&gt;
1. I2c check&lt;br /&gt;
 a. It doesn&#039;t work when assemled with mcontr and 2 DCMs.&lt;br /&gt;
 b. Started from the beginning. Works.&lt;br /&gt;
 c. Checked i2c four read with 1 start. Works fine.&lt;br /&gt;
 d. Adding DCMs.&lt;br /&gt;
&lt;br /&gt;
2. Check BRAM read/write. All&#039;s fine&lt;br /&gt;
&lt;br /&gt;
3. Check DDR read/write. Some problems. not solved&lt;br /&gt;
&lt;br /&gt;
4. Three different boards operate identically: BRAM - ok, DDR - not&lt;br /&gt;
&lt;br /&gt;
==Understanding how 353&#039;s mcontr works==&lt;br /&gt;
02/28/08:&lt;br /&gt;
15:04&lt;br /&gt;
for mode=0 ( 8 - burst length)&lt;br /&gt;
 TileX - number of (32x8) blocks&lt;br /&gt;
 Seq_par(or Param) - the last write block length - (Seq_par)x8&lt;br /&gt;
 TileY - number of TileX&lt;br /&gt;
 All this starts from StartAddress&lt;/div&gt;</summary>
		<author><name>Okdzhimiev</name></author>
	</entry>
	<entry>
		<id>https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3566</id>
		<title>10359 FPGA Simulation</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3566"/>
		<updated>2008-02-28T22:05:25Z</updated>

		<summary type="html">&lt;p&gt;Okdzhimiev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main page for the board is [[10359]].&lt;br /&gt;
&lt;br /&gt;
==Verification==&lt;br /&gt;
1. Channel 3 simulation:&lt;br /&gt;
* DDR initialization through i2c - done.&lt;br /&gt;
* write to DDR - done.&lt;br /&gt;
* read from DDR - done.&lt;br /&gt;
&lt;br /&gt;
2. PHASE_SHIFT in DCM is not available currently, because the model had bad constructs, but SDCLK(SDNCLK) can be controlled by &amp;quot;phsel&amp;quot;.&lt;br /&gt;
 For correct writing/reading from DDR in model set phsel=&amp;quot;01&amp;quot; (register=0x1008, value=0x00000004).&lt;br /&gt;
&lt;br /&gt;
==Board tests==&lt;br /&gt;
1. I2c check&lt;br /&gt;
 a. It doesn&#039;t work when assemled with mcontr and 2 DCMs.&lt;br /&gt;
 b. Started from the beginning. Works.&lt;br /&gt;
 c. Checked i2c four read with 1 start. Works fine.&lt;br /&gt;
 d. Adding DCMs.&lt;br /&gt;
&lt;br /&gt;
2. Check BRAM read/write.&lt;br /&gt;
&lt;br /&gt;
3. Check DDR read/write.&lt;br /&gt;
&lt;br /&gt;
==Understanding how 353&#039;s mcontr works==&lt;br /&gt;
02/28/08:&lt;br /&gt;
15:04&lt;br /&gt;
for mode=0 ( 8 - burst length)&lt;br /&gt;
 TileX - number of (32x8) blocks&lt;br /&gt;
 Seq_par(or Param) - the last write block length - (Seq_par)x8&lt;br /&gt;
 TileY - number of TileX&lt;br /&gt;
 All this starts from StartAddress&lt;/div&gt;</summary>
		<author><name>Okdzhimiev</name></author>
	</entry>
	<entry>
		<id>https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3565</id>
		<title>10359 FPGA Simulation</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3565"/>
		<updated>2008-02-28T22:00:39Z</updated>

		<summary type="html">&lt;p&gt;Okdzhimiev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main page for the board is [[10359]].&lt;br /&gt;
&lt;br /&gt;
==Verification==&lt;br /&gt;
1. Channel 3 simulation:&lt;br /&gt;
* DDR initialization through i2c - done.&lt;br /&gt;
* write to DDR - done.&lt;br /&gt;
* read from DDR - done.&lt;br /&gt;
&lt;br /&gt;
2. PHASE_SHIFT in DCM is not available currently, because the model had bad constructs, but SDCLK(SDNCLK) can be controlled by &amp;quot;phsel&amp;quot;.&lt;br /&gt;
 For correct writing/reading from DDR in model set phsel=&amp;quot;01&amp;quot; (register=0x1008, value=0x00000004).&lt;br /&gt;
&lt;br /&gt;
==Board tests==&lt;br /&gt;
1. I2c check&lt;br /&gt;
 a. It doesn&#039;t work when assemled with mcontr and 2 DCMs.&lt;br /&gt;
 b. Started from the beginning. Works.&lt;br /&gt;
 c. Checked i2c four read with 1 start. Works fine.&lt;br /&gt;
 d. Adding DCMs.&lt;br /&gt;
&lt;br /&gt;
2. Check BRAM read/write.&lt;br /&gt;
&lt;br /&gt;
3. Check DDR read/write.&lt;br /&gt;
&lt;br /&gt;
==Understanding how 353&#039;s mcontr works==&lt;br /&gt;
1. write registers and initialize channels&lt;br /&gt;
2.&lt;/div&gt;</summary>
		<author><name>Okdzhimiev</name></author>
	</entry>
	<entry>
		<id>https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3564</id>
		<title>10359 FPGA Simulation</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3564"/>
		<updated>2008-02-28T21:59:04Z</updated>

		<summary type="html">&lt;p&gt;Okdzhimiev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main page for the board is [[10359]].&lt;br /&gt;
&lt;br /&gt;
==Verification==&lt;br /&gt;
1. Channel 3 simulation:&lt;br /&gt;
* DDR initialization through i2c - done.&lt;br /&gt;
* write to DDR - done.&lt;br /&gt;
* read from DDR - done.&lt;br /&gt;
&lt;br /&gt;
2. PHASE_SHIFT in DCM is not available currently, because the model had bad constructs, but SDCLK(SDNCLK) can be controlled by &amp;quot;phsel&amp;quot;.&lt;br /&gt;
 For correct writing/reading from DDR in model set phsel=&amp;quot;01&amp;quot; (register=0x1008, value=0x00000004).&lt;br /&gt;
&lt;br /&gt;
==Board tests==&lt;br /&gt;
1. I2c check&lt;br /&gt;
 a. It doesn&#039;t work when assemled with mcontr and 2 DCMs.&lt;br /&gt;
 b. Started from the beginning. Works.&lt;br /&gt;
 c. Checked i2c four read with 1 start. Works fine.&lt;br /&gt;
 d. Adding DCMs.&lt;br /&gt;
&lt;br /&gt;
2. Check BRAM read/write.&lt;br /&gt;
&lt;br /&gt;
3. Check DDR read/write.&lt;/div&gt;</summary>
		<author><name>Okdzhimiev</name></author>
	</entry>
	<entry>
		<id>https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3563</id>
		<title>10359 FPGA Simulation</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3563"/>
		<updated>2008-02-19T23:02:33Z</updated>

		<summary type="html">&lt;p&gt;Okdzhimiev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main page for the board is [[10359]].&lt;br /&gt;
&lt;br /&gt;
==Verification==&lt;br /&gt;
1. Channel 3 simulation:&lt;br /&gt;
* DDR initialization through i2c - done.&lt;br /&gt;
* write to DDR - done.&lt;br /&gt;
* read from DDR - done.&lt;br /&gt;
&lt;br /&gt;
2. PHASE_SHIFT in DCM is not available currently, because the model had bad constructs, but SDCLK(SDNCLK) can be controlled by &amp;quot;phsel&amp;quot;.&lt;br /&gt;
 For correct writing/reading from DDR in model set phsel=&amp;quot;01&amp;quot; (register=0x1008, value=0x00000004).&lt;br /&gt;
&lt;br /&gt;
==Board tests==&lt;br /&gt;
1. I2c check&lt;br /&gt;
 a. It doesn&#039;t work when i assemled project with mcontr and 2 DCMs.&lt;br /&gt;
 b. Started from the beginning. Works.&lt;br /&gt;
 c. Checked i2c four read with 1 start. Works fine.&lt;br /&gt;
 d. Adding DCMs.&lt;br /&gt;
&lt;br /&gt;
2. Check BRAM read/write.&lt;br /&gt;
&lt;br /&gt;
3. Check DDR read/write.&lt;/div&gt;</summary>
		<author><name>Okdzhimiev</name></author>
	</entry>
	<entry>
		<id>https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3562</id>
		<title>10359 FPGA Simulation</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3562"/>
		<updated>2008-02-19T22:36:27Z</updated>

		<summary type="html">&lt;p&gt;Okdzhimiev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main page for the board is [[10359]].&lt;br /&gt;
&lt;br /&gt;
==Verification==&lt;br /&gt;
1. Channel 3 simulation:&lt;br /&gt;
* DDR initialization through i2c - done.&lt;br /&gt;
* write to DDR - done.&lt;br /&gt;
* read from DDR - done.&lt;br /&gt;
&lt;br /&gt;
2. PHASE_SHIFT in DCM is not available currently, because the model had bad constructs, but SDCLK(SDNCLK) can be controlled by &amp;quot;phsel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Board tests==&lt;br /&gt;
1. I2c check&lt;br /&gt;
 a. It doesn&#039;t work when i assemled project with mcontr and 2 DCMs.&lt;br /&gt;
 b. Started from the beginning. Works.&lt;br /&gt;
 c. Checked i2c four read with 1 start. Works fine.&lt;br /&gt;
 d. Adding DCMs.&lt;br /&gt;
&lt;br /&gt;
2. Check BRAM read/write.&lt;br /&gt;
&lt;br /&gt;
3. Check DDR read/write.&lt;/div&gt;</summary>
		<author><name>Okdzhimiev</name></author>
	</entry>
	<entry>
		<id>https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3561</id>
		<title>10359 FPGA Simulation</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3561"/>
		<updated>2008-02-19T22:16:27Z</updated>

		<summary type="html">&lt;p&gt;Okdzhimiev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main page for the board is [[10359]].&lt;br /&gt;
&lt;br /&gt;
==Verification==&lt;br /&gt;
1. Channel 3 simulation:&lt;br /&gt;
* DDR initialization through i2c - done.&lt;br /&gt;
* write to DDR - done.&lt;br /&gt;
* read from DDR - done.&lt;br /&gt;
&lt;br /&gt;
2. PHASE_SHIFT in DCM is not available currently, because the model had bad constructs&lt;br /&gt;
&lt;br /&gt;
==Board tests==&lt;br /&gt;
1. I2c check&lt;br /&gt;
 a. It doesn&#039;t work when i assemled project with mcontr and 2 DCMs.&lt;br /&gt;
 b. Started from the beginning. Works.&lt;br /&gt;
 c. Checked i2c four read with 1 start. Works fine.&lt;br /&gt;
 d. Adding DCMs.&lt;br /&gt;
&lt;br /&gt;
2. Check BRAM read/write.&lt;br /&gt;
&lt;br /&gt;
3. Check DDR read/write.&lt;/div&gt;</summary>
		<author><name>Okdzhimiev</name></author>
	</entry>
	<entry>
		<id>https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3560</id>
		<title>10359 FPGA Simulation</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3560"/>
		<updated>2008-02-15T18:23:42Z</updated>

		<summary type="html">&lt;p&gt;Okdzhimiev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main page for the board is [[10359]].&lt;br /&gt;
&lt;br /&gt;
==Verification==&lt;br /&gt;
1. Channel 3 simulation:&lt;br /&gt;
* DDR initialization through i2c - done.&lt;br /&gt;
* write to DDR - done.&lt;br /&gt;
* read from DDR - done.&lt;br /&gt;
&lt;br /&gt;
==Board tests==&lt;br /&gt;
1. I2c check&lt;br /&gt;
 a. It doesn&#039;t work when i assemled project with mcontr and 2 DCMs.&lt;br /&gt;
 b. Started from the beginning. Works.&lt;br /&gt;
 c. Checked i2c four read with 1 start. Works fine.&lt;br /&gt;
 d. Adding DCMs.&lt;br /&gt;
&lt;br /&gt;
2. Check BRAM read/write.&lt;br /&gt;
&lt;br /&gt;
3. Check DDR read/write.&lt;/div&gt;</summary>
		<author><name>Okdzhimiev</name></author>
	</entry>
	<entry>
		<id>https://wiki.elphel.com/index.php?title=Talk:10359_FPGA_Simulation&amp;diff=3633</id>
		<title>Talk:10359 FPGA Simulation</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=Talk:10359_FPGA_Simulation&amp;diff=3633"/>
		<updated>2008-02-14T01:04:39Z</updated>

		<summary type="html">&lt;p&gt;Okdzhimiev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1800.02.13.2008: Wrong device type was selected in the project x359. This caused the programming file generation error: that was about differential pin SDNCLK (the pinout is not the same for different packages).&lt;/div&gt;</summary>
		<author><name>Okdzhimiev</name></author>
	</entry>
	<entry>
		<id>https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3559</id>
		<title>10359 FPGA Simulation</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3559"/>
		<updated>2008-02-14T00:59:10Z</updated>

		<summary type="html">&lt;p&gt;Okdzhimiev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main page for the board is [[10359]].&lt;br /&gt;
&lt;br /&gt;
==Verification==&lt;br /&gt;
1. Channel 3 simulation:&lt;br /&gt;
* DDR initialization through i2c - done.&lt;br /&gt;
* write to DDR - done.&lt;br /&gt;
* read from DDR - done.&lt;br /&gt;
&lt;br /&gt;
==Board tests==&lt;br /&gt;
1. Check BRAM read/write.&lt;br /&gt;
&lt;br /&gt;
2. Check DDR read/write.&lt;/div&gt;</summary>
		<author><name>Okdzhimiev</name></author>
	</entry>
	<entry>
		<id>https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3558</id>
		<title>10359 FPGA Simulation</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3558"/>
		<updated>2008-02-14T00:57:53Z</updated>

		<summary type="html">&lt;p&gt;Okdzhimiev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main page for the board is [[10359]].&lt;br /&gt;
&lt;br /&gt;
==Verification==&lt;br /&gt;
1. Channel 3 simulation:&lt;br /&gt;
* DDR initialization through i2c - done.&lt;br /&gt;
* write to DDR - done.&lt;br /&gt;
* read from DDR - done.&lt;br /&gt;
&lt;br /&gt;
==Board tests==&lt;br /&gt;
1. Check BRAM read/write.&lt;br /&gt;
2. Check DDR read/write.&lt;/div&gt;</summary>
		<author><name>Okdzhimiev</name></author>
	</entry>
	<entry>
		<id>https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3557</id>
		<title>10359 FPGA Simulation</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3557"/>
		<updated>2008-02-14T00:57:25Z</updated>

		<summary type="html">&lt;p&gt;Okdzhimiev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main page for the board is [[10359]].&lt;br /&gt;
&lt;br /&gt;
==Verification==&lt;br /&gt;
1. channel 3 simulation:&lt;br /&gt;
* DDR initialization through i2c - done&lt;br /&gt;
* write to DDR - done&lt;br /&gt;
* read from DDR - done&lt;br /&gt;
&lt;br /&gt;
==Board tests==&lt;br /&gt;
1. check BRAM read/write&lt;br /&gt;
2. check DDR read/write&lt;/div&gt;</summary>
		<author><name>Okdzhimiev</name></author>
	</entry>
	<entry>
		<id>https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3556</id>
		<title>10359 FPGA Simulation</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3556"/>
		<updated>2008-02-14T00:54:01Z</updated>

		<summary type="html">&lt;p&gt;Okdzhimiev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main page for the board is [[10359]].&lt;br /&gt;
&lt;br /&gt;
1. channel 3 simulation:&lt;br /&gt;
* DDR initialization through i2c - done&lt;br /&gt;
* write to DDR - done&lt;br /&gt;
* read from DDR - done&lt;/div&gt;</summary>
		<author><name>Okdzhimiev</name></author>
	</entry>
	<entry>
		<id>https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3555</id>
		<title>10359 FPGA Simulation</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3555"/>
		<updated>2008-02-13T01:57:16Z</updated>

		<summary type="html">&lt;p&gt;Okdzhimiev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main page for the board is [[10359]].&lt;br /&gt;
&lt;br /&gt;
1. channel 3 simulation:&lt;br /&gt;
* DDR initialization through i2c - done&lt;br /&gt;
* write to DDR - done&lt;br /&gt;
* read from DDR - doing&lt;/div&gt;</summary>
		<author><name>Okdzhimiev</name></author>
	</entry>
	<entry>
		<id>https://wiki.elphel.com/index.php?title=10359&amp;diff=2039</id>
		<title>10359</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=10359&amp;diff=2039"/>
		<updated>2008-02-13T01:40:07Z</updated>

		<summary type="html">&lt;p&gt;Okdzhimiev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==10359==&lt;br /&gt;
[[Image:10359top_sm.jpeg|frame|[[Media:10359top.jpeg|10359 board, top view]]]]&lt;br /&gt;
[[Image:10359bot_sm.jpeg|frame|[[Media:10359bot.jpeg|10359 board, bottom view]]]]&lt;br /&gt;
[[Image:10359bd.png|frame|[[Media:10359sch.pdf|10359 Circuit Diagram]]]]&lt;br /&gt;
10359 is an optional multi-function board for [[353|Elplhel Model 353/363 Cameras]]. It can be connected between the [[10353|10353 Processor board]] and a sensor one (up to three sensor boards can be connected)&lt;br /&gt;
This board has the same FPGA-DDR SDRAM pair as on the 10353 (Processor) board. It uses just one extra conductor in the flex cable to configure the on-board FPGA, rest of the JTAG programming interface pins share connections with the data signals. This board can fit in the standard camera enclosure (when only one sensor board is used) and does not interfere with the boards that use inter-board connectors (i.e. 10357) - the 10359 is mounted on the other side of the 10353 board.&lt;br /&gt;
&lt;br /&gt;
10359 board can be used in the following applications (as well as other ones):&lt;br /&gt;
* Additional custom image processing in the FPGA without the requirement to recompile the main FPGA on the 10353 board and solve possible conflicts with existent functionality.&lt;br /&gt;
* multiplex several sensor boards (i.e. &amp;quot;day&amp;quot; - color and &amp;quot;night&amp;quot; - monochrome) to one 10353 camera board.&lt;br /&gt;
* simultaneously acquire images from up to 3 sensors, compress them and send out one after another&lt;br /&gt;
* extract 3-d information from multiple sensors in real time in FPGA&lt;br /&gt;
* use additional sensor(s) to run correlation code (like in optical mice) to track camera orientation to compensate for the effect of [[Electronic_Rolling_Shutter]]&lt;br /&gt;
* connect earlier sensor boards (with 3.3V interface) to the 10353 board. Interface voltage for the sensor boards can be switched from 2.5V to 3.3V (all 3 simultaneously)&lt;br /&gt;
&lt;br /&gt;
Connectors:&lt;br /&gt;
* 30-pin flex cable connector (J1) for data to/from the [[10353|10353 Processor board]]. It also receives 3.3V power through this connector&lt;br /&gt;
* 3 of 30-pin flex cable connectors (J2, J3, J4) for the flex cables to the sensor boards (i.e. [[10338]], [[10347]])&lt;br /&gt;
&lt;br /&gt;
Spartan3E:&lt;br /&gt;
*[[10359_FPGA_Simulation|Firmware verification notes]].&lt;/div&gt;</summary>
		<author><name>Okdzhimiev</name></author>
	</entry>
	<entry>
		<id>https://wiki.elphel.com/index.php?title=10359&amp;diff=2038</id>
		<title>10359</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=10359&amp;diff=2038"/>
		<updated>2008-02-13T01:38:31Z</updated>

		<summary type="html">&lt;p&gt;Okdzhimiev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==10359==&lt;br /&gt;
[[Image:10359top_sm.jpeg|frame|[[Media:10359top.jpeg|10359 board, top view]]]]&lt;br /&gt;
[[Image:10359bot_sm.jpeg|frame|[[Media:10359bot.jpeg|10359 board, bottom view]]]]&lt;br /&gt;
[[Image:10359bd.png|frame|[[Media:10359sch.pdf|10359 Circuit Diagram]]]]&lt;br /&gt;
10359 is an optional multi-function board for [[353|Elplhel Model 353/363 Cameras]]. It can be connected between the [[10353|10353 Processor board]] and a sensor one (up to three sensor boards can be connected)&lt;br /&gt;
This board has the same FPGA-DDR SDRAM pair as on the 10353 (Processor) board. It uses just one extra conductor in the flex cable to configure the on-board FPGA, rest of the JTAG programming interface pins share connections with the data signals. This board can fit in the standard camera enclosure (when only one sensor board is used) and does not interfere with the boards that use inter-board connectors (i.e. 10357) - the 10359 is mounted on the other side of the 10353 board.&lt;br /&gt;
&lt;br /&gt;
10359 board can be used in the following applications (as well as other ones):&lt;br /&gt;
* Additional custom image processing in the FPGA without the requirement to recompile the main FPGA on the 10353 board and solve possible conflicts with existent functionality.&lt;br /&gt;
* multiplex several sensor boards (i.e. &amp;quot;day&amp;quot; - color and &amp;quot;night&amp;quot; - monochrome) to one 10353 camera board.&lt;br /&gt;
* simultaneously acquire images from up to 3 sensors, compress them and send out one after another&lt;br /&gt;
* extract 3-d information from multiple sensors in real time in FPGA&lt;br /&gt;
* use additional sensor(s) to run correlation code (like in optical mice) to track camera orientation to compensate for the effect of [[Electronic_Rolling_Shutter]]&lt;br /&gt;
* connect earlier sensor boards (with 3.3V interface) to the 10353 board. Interface voltage for the sensor boards can be switched from 2.5V to 3.3V (all 3 simultaneously)&lt;br /&gt;
&lt;br /&gt;
Connectors:&lt;br /&gt;
* 30-pin flex cable connector (J1) for data to/from the [[10353|10353 Processor board]]. It also receives 3.3V power through this connector&lt;br /&gt;
* 3 of 30-pin flex cable connectors (J2, J3, J4) for the flex cables to the sensor boards (i.e. [[10338]], [[10347]])&lt;br /&gt;
&lt;br /&gt;
[[10359_FPGA_Simulation|Firmware verification notes]].&lt;/div&gt;</summary>
		<author><name>Okdzhimiev</name></author>
	</entry>
	<entry>
		<id>https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3554</id>
		<title>10359 FPGA Simulation</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3554"/>
		<updated>2008-02-13T01:34:46Z</updated>

		<summary type="html">&lt;p&gt;Okdzhimiev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main page for the board is [[10359]].&lt;/div&gt;</summary>
		<author><name>Okdzhimiev</name></author>
	</entry>
	<entry>
		<id>https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3553</id>
		<title>10359 FPGA Simulation</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=10359_FPGA_Simulation&amp;diff=3553"/>
		<updated>2008-02-13T01:34:22Z</updated>

		<summary type="html">&lt;p&gt;Okdzhimiev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main page for board is [[10359]].&lt;/div&gt;</summary>
		<author><name>Okdzhimiev</name></author>
	</entry>
	<entry>
		<id>https://wiki.elphel.com/index.php?title=FPGA_Development_in_Elphel_cameras&amp;diff=3518</id>
		<title>FPGA Development in Elphel cameras</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=FPGA_Development_in_Elphel_cameras&amp;diff=3518"/>
		<updated>2008-02-05T01:11:52Z</updated>

		<summary type="html">&lt;p&gt;Okdzhimiev: /* Installation of the Xilinx ISE WebPACK */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Much of the performance and flexibility of the Elphel cameras are provided by the reconfigurable [http://en.wikipedia.org/wiki/Fpga FPGA] chips. FPGA is used on the main camera board (currently it is [[10353]]) and on some of the extension ones ([[10347]], [[10359]], [[10357]]). On the main board the FPGA chip complements CPU to perform video processing and compression - it does this nearly 100 times faster than the CPU alone, but generally it is significantly more difficult to implement some functionality in the FPGA than it can be done in the software. And so the camera (like many other modern devices) combines the strong features of both: FPGA performs computationally intensive but algorithmically relatively simple operations (working with the images on the pixel level, providing image compression) and the CPU is responsible for the higher level functions, interface and overall control of the camera.&lt;br /&gt;
&lt;br /&gt;
Elphel does not make secrets of the FPGA code, all the source code is available under [http://www.gnu.org/licenses/gpl.html GNU GPL v 3.0] license, the same one as used for the camera software. Elphel software distribution (available both on [https://sourceforge.net/projects/elphel Sourceforge project page] and inside each camera file system) includes both binary FPGA image (&amp;quot;bit file&amp;quot;) and the source code needed to re-create the FPGA image and/or simulate the design. Also included are the log files generated by the FPGA &amp;quot;compiler&amp;quot; during creation of the provided bit file so you may look inside even if you do not have the necessary FPGA tools, you may also find these files useful to compare with the output that you get from those tools.&lt;br /&gt;
&lt;br /&gt;
==FPGA design flow==&lt;br /&gt;
There are two main activities during development of the FPGA code: synthesis and simulation.&lt;br /&gt;
* Synthesis (the whole process involves more steps in addition to just strictly &amp;quot;synthesis&amp;quot; itself) is needed to translate the source code into the &amp;quot;executable&amp;quot; and&lt;br /&gt;
* Simulation - software emulation of the FPGA functionality. Simulation runs about million times slower than the real thing, but it allows easy analysis of what is going inside the design, provides ability to test and troubleshoot project as a whole or individual modules.&lt;br /&gt;
&lt;br /&gt;
==Software required for FPGA development with Elphel products==&lt;br /&gt;
===Software for synthesis===&lt;br /&gt;
Elphel cameras use 1200K gates Xilinx [http://www.xilinx.com/products/silicon_solutions/fpgas/spartan_series/spartan3e_fpgas/index.htm Spartan(R) 3e FPGA] (XC3S1200E-5FT256C) that are supported (among others) by free for download (but non-free software) [http://www.xilinx.com/ise/logic_design_prod/webpack.htm ISE WebPACK (R)] tools (registration required for download).&lt;br /&gt;
&lt;br /&gt;
That software package is really good for &amp;quot;compiling&amp;quot; your design into silicon, but the simulator provided with the free for download tools has reduced functionality.&lt;br /&gt;
===Software for simulation===&lt;br /&gt;
Luckily there are really free (GNU GPL) tools available for simulation and Elphel provides scripts for simulation of the design using these tools. Simulation software we use consists of two parts (that require separate installation), provided are the links to the current (as of January,28 2008) releases:&lt;br /&gt;
* [ftp://ftp.icarus.com/pub/eda/verilog/v0.8/verilog-0.8.6.tar.gz Icarus] Verilog simulator and&lt;br /&gt;
* [http://home.nc.rr.com/gtkwave/ GTKWave] wave viewer - download: [http://home.nc.rr.com/gtkwave/gtkwave-3.1.4.tar.gz gtkwave-3.1.4.tar.gz], documentation (archived PDF): [http://home.nc.rr.com/gtkwave/gtkwave-doc-3.1.3.tar.gz  gtkwave-doc-3.1.3.tar.gz].&lt;br /&gt;
&lt;br /&gt;
Note:&#039;&#039;You will still need to download and install [http://www.xilinx.com/ise/logic_design_prod/webpack.htm Xilinx ISE WebPACK (R)] even for simulation only. That package includes Verilog source code library that describes the FPGA device primitives used in the design and the current license does not allow to distribute this library with the design.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Installation of the Xilinx ISE WebPACK ===&lt;br /&gt;
To install WebPACK on 64-bit platform 32-bit libraries are needed: &lt;br /&gt;
 sudo apt-get install ia32-libs ia32-libs-gtk ia32-libs-sdl dpkg-dev&lt;br /&gt;
&lt;br /&gt;
Current versions of Xilinx ISE WebPACK install on Linux rather smoothly (Last time I used WebPACK 9.2 and Kubuntu 7.04) but minor tweaking was needed to launch programs like Timing Analyzer or FPGA Editor. They needed additional package to be installed (don&#039;t remember - will put here when find out) and &amp;quot;export DISPLAY=:0&amp;quot; to run correctly (without that ISE &amp;quot;as if&amp;quot; launches those programs, but nothing really happens). I just created a small startup script &#039;&#039;launch_ise.sh&#039;&#039; in the WebPACK installation directory (it was /usr/local/Xilinx92 in my case) with the following content:&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 cd $(dirname $0)&lt;br /&gt;
 export DISPLAY=:0&lt;br /&gt;
 ./bin/lin/ise&lt;br /&gt;
&lt;br /&gt;
==Importing Elphel project into Xilinx ISE WebPack==&lt;br /&gt;
&lt;br /&gt;
All the FPGA code for Elphel products is located in the fpga directory of the top installation directory that will be created when you run &amp;quot;./install_elphel&amp;quot; script inside the directory created when you inflate the Elphel software distribution. The project files for the main board ([[10353]]) FPGA is included in the fpga/x3x3 subdirectory.&lt;br /&gt;
&lt;br /&gt;
When you start the ISE WebPack you need to select (from the top menu)&amp;quot;&lt;br /&gt;
 Project -&amp;gt; Source Control -&amp;gt; Import&lt;br /&gt;
And then for the &amp;quot;Project file to import&amp;quot; navigate to the fpga/x3x3 subdirectory of you project and select file x353_import.tcl. For the &amp;quot;Directory to import to&amp;quot; select the same directory (you may just click on &amp;quot;...&amp;quot; button and then on &amp;quot;OK&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
That should conclude importing of the project, the x353.ise will be created and you should be able to view/edit project files and run synthesis and implementation tools.&lt;br /&gt;
&lt;br /&gt;
==Simulating 10353 board FPGA with Icarus Verilog and GTKWave==&lt;br /&gt;
&lt;br /&gt;
The first step is to create a library of the Xilinx primitives that can be processed by Icarus Verilog. Unfortunately the library as provided with WebPACK is not immediately compatible with the Icarus Verilog simulator and we do not have a license to distribute the modified for Icarus version of the primitives source code.&lt;br /&gt;
&lt;br /&gt;
The library in question is installed as verilg/src/unisims directory of the top installation directory of Xilinx WebPACK (in my case it is /usr/local/Xilinx92). The [http://elphel.cvs.sourceforge.net/elphel/elphel353-7.1/fpga/Makefile?view=markup Makefile] (together with the [http://elphel.cvs.sourceforge.net/elphel/elphel353-7.1/fpga/unisims_patch.sh?view=markup unisims_patch.sh] script)  in the fpga subdirectory of the Elphel product source tree looks for the Xilinx WebPACK installation on the computer, copies unisims library directory to the fpga directory and patches the files for compatibility with Icarus Verilog. Some modifications (like removing of qualifiers &amp;quot;integer&amp;quot; an &amp;quot;real&amp;quot; after the keywords &amp;quot;parameter&amp;quot; and &amp;quot;localparam&amp;quot; currently not supported by Icarus) are applied to all files, other are specific patches to the files used so far in the project. That means that if you use some other unisims primitives in addition to those already used in the x3x3 project they may also need some patching.&lt;br /&gt;
&lt;br /&gt;
We do not know when any of the files we used will be modified by Xilinx, but we&#039;ll try to maintain the patches current. Please notify Elphel developers if you will have incompatibility problems.&lt;br /&gt;
&lt;br /&gt;
If the script can not locate the Xilinx WebPACK installation during software build, the empty &amp;quot;unisims&amp;quot; directory is created under &amp;quot;fpga&amp;quot; and during next runs of &amp;quot;make&amp;quot; it will skip searching for the unisims library. In the case you installed WebPACK after the first run of &amp;quot;make&amp;quot; or have several different versions of WebPACK you may want to navigate to fpga directory and run&lt;br /&gt;
 make; make install&lt;br /&gt;
there (if you did not build Elphel software in the current session you may need to run &lt;br /&gt;
. ./init_env&lt;br /&gt;
(dot-space-dot-slash-init_env) in the top installation directory (called &amp;quot;elphel353&amp;quot; by default), one level above &amp;quot;fpga&amp;quot; one.&lt;br /&gt;
&lt;br /&gt;
When the unisims library is ready you may try the simulation itself. Navigate to the fpga/x3x3 and run&lt;br /&gt;
./[http://elphel.cvs.sourceforge.net/elphel/elphel353-7.1/fpga/x3x3/x353_sim.sh?view=markup x353_sim.sh]&lt;br /&gt;
As a result you will see some output (it may make sense to set console history to &amp;quot;unlimited&amp;quot;), there should be no errors (at least until until the &amp;quot;Runnig ...&amp;quot;):&lt;br /&gt;
 removed `x353.lxt&#039;&lt;br /&gt;
 Using UNISIM library ../unisims&lt;br /&gt;
 Icarus Verilog version 0.8.6 ($Name:  $)&lt;br /&gt;
 Copyright 1998-2003 Stephen Williams&lt;br /&gt;
  This program is free software; you can redistribute it and/or modify&lt;br /&gt;
  it under the terms of the GNU General Public License as published by&lt;br /&gt;
  the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
  (at your option) any later version.&lt;br /&gt;
  This program is distributed in the hope that it will be useful,&lt;br /&gt;
  but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
  GNU General Public License for more details.&lt;br /&gt;
  You should have received a copy of the GNU General Public License&lt;br /&gt;
  along with this program; if not, write to the Free Software&lt;br /&gt;
  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA&lt;br /&gt;
 translate: /usr/local/lib/ivl/ivlpp  -v -L -D__ICARUS__=1 -f/tmp/ivrlg60f03525  -Dlegacy_model | /usr/local/lib/ivl/ivl -v -C/tmp/ivrlh60f03525 -C/usr/local/lib/ivl/vvp.conf -- -&lt;br /&gt;
 Icarus Verilog Preprocessor version $Name:  $ $State: Exp $&lt;br /&gt;
 Copyright (c) 1999 Stephen Williams (steve@icarus.com)&lt;br /&gt;
  This program is free software; you can redistribute it and/or modify&lt;br /&gt;
  it under the terms of the GNU General Public License as published by&lt;br /&gt;
  the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
  (at your option) any later version.&lt;br /&gt;
  This program is distributed in the hope that it will be useful,&lt;br /&gt;
  but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
  GNU General Public License for more details.&lt;br /&gt;
  You should have received a copy of the GNU General Public License&lt;br /&gt;
  along with this program; if not, write to the Free Software&lt;br /&gt;
  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA&lt;br /&gt;
 Indexing library: ../unisims&lt;br /&gt;
 /usr/local/lib/ivl/system.sft: Processing System Function Table file.&lt;br /&gt;
 Using language generation: SystemVerilog 3.0&lt;br /&gt;
 PARSING INPUT&lt;br /&gt;
 ... done, 0.08 seconds.&lt;br /&gt;
 ELABORATING DESIGN&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/PULLDOWN.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/FD.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/FD_1.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/IOBUF.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/FDDRCPE.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/FDCPE.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/FDCPE_1.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/OBUF.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/KEEPER.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/IBUF.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/LD.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/BUFG.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/FDCE.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/LUT4.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/BUF.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/FDE_1.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/FDCE_1.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/IBUFDS.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/IBUFG.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/DCM.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/BUFGMUX.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/OBUFDS.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/SRL16.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/FDE.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/PULLUP.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/RAMB16_S18_S36.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/RAMB16_S9_S36.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/RAMB16_S36_S36.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/SRL16_1.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/MULT18X18.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/RAMB16_S18_S18.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/FDC_1.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/FDC.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/RAMB16_S9_S9.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/RAM16X1D.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/RAMB4_S8_S8.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/ROM32X1.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/MULT18X18SIO.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/LD_1.v&lt;br /&gt;
  ... done, 0.64 seconds.&lt;br /&gt;
 RUNNING FUNCTORS&lt;br /&gt;
 -F cprop ...&lt;br /&gt;
 -F nodangle ...&lt;br /&gt;
 ... 1 iterations deleted 3265 dangling signals and 1210 events. (count=3067)&lt;br /&gt;
 ... 2 iterations deleted 3265 dangling signals and 1210 events. (count=0)&lt;br /&gt;
 ... done, 0.06 seconds.&lt;br /&gt;
 CODE GENERATION -t dll&lt;br /&gt;
 ... invoking target_design&lt;br /&gt;
 ... done, 0.93 seconds.&lt;br /&gt;
 STATISTICS&lt;br /&gt;
 lex_string: add_count=15385 hit_count=41544&lt;br /&gt;
 Compiling VVP ...&lt;br /&gt;
 Compile cleanup...&lt;br /&gt;
 ... Linking&lt;br /&gt;
 ... Removing symbol tables&lt;br /&gt;
 ...   347402 functors&lt;br /&gt;
               9435 table&lt;br /&gt;
                177 bufif&lt;br /&gt;
                859 resolv&lt;br /&gt;
             328086 variable&lt;br /&gt;
 ...   222122 opcodes (5357568 bytes)&lt;br /&gt;
 ...    12573 nets&lt;br /&gt;
 ...       28 memories&lt;br /&gt;
 ...     1290 scopes&lt;br /&gt;
 ... 1.47609 seconds, 57292.0/38120.0/1356.0 KBytes size/rss/shared&lt;br /&gt;
 Running ...&lt;br /&gt;
After the simulation itself will start that generates &amp;quot;x353.lxt&amp;quot; (older version if any of that file was removed at the start of the script). It will take some time to simulate a fraction of a millisecond (as simulation is about a million times slower than the real time) and then the&lt;br /&gt;
 gtkwave x353.lxt x353_1.sav &amp;amp;&lt;br /&gt;
command will be executed that should open the waveform viewer. In addition to the simulation result &amp;quot;x353.lxt&amp;quot; the viewer uses &amp;quot;[http://elphel.cvs.sourceforge.net/elphel/elphel353-7.1/fpga/x3x3/x353_1.sav?view=markup x353_1.sav]&amp;quot; - file that contains viewer state with some signals selected and grouped. GTKWave allows you to create, save and read back such files.&lt;br /&gt;
&lt;br /&gt;
You may change the simulation sequence by modifying the file [http://elphel.cvs.sourceforge.net/elphel/elphel353-7.1/fpga/x3x3/x353_1.tf?view=markup fpga/x3x3/x353_1.tf] or creating a new simulation sequence and modifying the [http://elphel.cvs.sourceforge.net/elphel/elphel353-7.1/fpga/x3x3/x353_sim.sh?view=markup fpga/x3x3/x353_sim.sh] script to use that file instead of the [http://elphel.cvs.sourceforge.net/elphel/elphel353-7.1/fpga/x3x3/x353_1.tf?view=markup fpga/x3x3/x353_1.tf].&lt;/div&gt;</summary>
		<author><name>Okdzhimiev</name></author>
	</entry>
	<entry>
		<id>https://wiki.elphel.com/index.php?title=FPGA_Development_in_Elphel_cameras&amp;diff=3517</id>
		<title>FPGA Development in Elphel cameras</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=FPGA_Development_in_Elphel_cameras&amp;diff=3517"/>
		<updated>2008-02-04T22:25:41Z</updated>

		<summary type="html">&lt;p&gt;Okdzhimiev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Much of the performance and flexibility of the Elphel cameras are provided by the reconfigurable [http://en.wikipedia.org/wiki/Fpga FPGA] chips. FPGA is used on the main camera board (currently it is [[10353]]) and on some of the extension ones ([[10347]], [[10359]], [[10357]]). On the main board the FPGA chip complements CPU to perform video processing and compression - it does this nearly 100 times faster than the CPU alone, but generally it is significantly more difficult to implement some functionality in the FPGA than it can be done in the software. And so the camera (like many other modern devices) combines the strong features of both: FPGA performs computationally intensive but algorithmically relatively simple operations (working with the images on the pixel level, providing image compression) and the CPU is responsible for the higher level functions, interface and overall control of the camera.&lt;br /&gt;
&lt;br /&gt;
Elphel does not make secrets of the FPGA code, all the source code is available under [http://www.gnu.org/licenses/gpl.html GNU GPL v 3.0] license, the same one as used for the camera software. Elphel software distribution (available both on [https://sourceforge.net/projects/elphel Sourceforge project page] and inside each camera file system) includes both binary FPGA image (&amp;quot;bit file&amp;quot;) and the source code needed to re-create the FPGA image and/or simulate the design. Also included are the log files generated by the FPGA &amp;quot;compiler&amp;quot; during creation of the provided bit file so you may look inside even if you do not have the necessary FPGA tools, you may also find these files useful to compare with the output that you get from those tools.&lt;br /&gt;
&lt;br /&gt;
==FPGA design flow==&lt;br /&gt;
There are two main activities during development of the FPGA code: synthesis and simulation.&lt;br /&gt;
* Synthesis (the whole process involves more steps in addition to just strictly &amp;quot;synthesis&amp;quot; itself) is needed to translate the source code into the &amp;quot;executable&amp;quot; and&lt;br /&gt;
* Simulation - software emulation of the FPGA functionality. Simulation runs about million times slower than the real thing, but it allows easy analysis of what is going inside the design, provides ability to test and troubleshoot project as a whole or individual modules.&lt;br /&gt;
&lt;br /&gt;
==Software required for FPGA development with Elphel products==&lt;br /&gt;
===Software for synthesis===&lt;br /&gt;
Elphel cameras use 1200K gates Xilinx [http://www.xilinx.com/products/silicon_solutions/fpgas/spartan_series/spartan3e_fpgas/index.htm Spartan(R) 3e FPGA] (XC3S1200E-5FT256C) that are supported (among others) by free for download (but non-free software) [http://www.xilinx.com/ise/logic_design_prod/webpack.htm ISE WebPACK (R)] tools (registration required for download).&lt;br /&gt;
&lt;br /&gt;
That software package is really good for &amp;quot;compiling&amp;quot; your design into silicon, but the simulator provided with the free for download tools has reduced functionality.&lt;br /&gt;
===Software for simulation===&lt;br /&gt;
Luckily there are really free (GNU GPL) tools available for simulation and Elphel provides scripts for simulation of the design using these tools. Simulation software we use consists of two parts (that require separate installation), provided are the links to the current (as of January,28 2008) releases:&lt;br /&gt;
* [ftp://ftp.icarus.com/pub/eda/verilog/v0.8/verilog-0.8.6.tar.gz Icarus] Verilog simulator and&lt;br /&gt;
* [http://home.nc.rr.com/gtkwave/ GTKWave] wave viewer - download: [http://home.nc.rr.com/gtkwave/gtkwave-3.1.4.tar.gz gtkwave-3.1.4.tar.gz], documentation (archived PDF): [http://home.nc.rr.com/gtkwave/gtkwave-doc-3.1.3.tar.gz  gtkwave-doc-3.1.3.tar.gz].&lt;br /&gt;
&lt;br /&gt;
Note:&#039;&#039;You will still need to download and install [http://www.xilinx.com/ise/logic_design_prod/webpack.htm Xilinx ISE WebPACK (R)] even for simulation only. That package includes Verilog source code library that describes the FPGA device primitives used in the design and the current license does not allow to distribute this library with the design.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Installation of the Xilinx ISE WebPACK ===&lt;br /&gt;
&lt;br /&gt;
Current versions of Xilinx ISE WebPACK install on Linux rather smoothly (Last time I used WebPACK 9.2 and Kubuntu 7.04) but minor tweaking was needed to launch programs like Timing Analyzer or FPGA Editor. They needed additional package to be installed (don&#039;t remember - will put here when find out) and &amp;quot;export DISPLAY=:0&amp;quot; to run correctly (without that ISE &amp;quot;as if&amp;quot; launches those programs, but nothing really happens). I just created a small startup script &#039;&#039;launch_ise.sh&#039;&#039; in the WebPACK installation directory (it was /usr/local/Xilinx92 in my case) with the following content:&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 cd $(dirname $0)&lt;br /&gt;
 export DISPLAY=:0&lt;br /&gt;
 ./bin/lin/ise&lt;br /&gt;
&lt;br /&gt;
==Importing Elphel project into Xilinx ISE WebPack==&lt;br /&gt;
&lt;br /&gt;
All the FPGA code for Elphel products is located in the fpga directory of the top installation directory that will be created when you run &amp;quot;./install_elphel&amp;quot; script inside the directory created when you inflate the Elphel software distribution. The project files for the main board ([[10353]]) FPGA is included in the fpga/x3x3 subdirectory.&lt;br /&gt;
&lt;br /&gt;
When you start the ISE WebPack you need to select (from the top menu)&amp;quot;&lt;br /&gt;
 Project -&amp;gt; Source Control -&amp;gt; Import&lt;br /&gt;
And then for the &amp;quot;Project file to import&amp;quot; navigate to the fpga/x3x3 subdirectory of you project and select file x353_import.tcl. For the &amp;quot;Directory to import to&amp;quot; select the same directory (you may just click on &amp;quot;...&amp;quot; button and then on &amp;quot;OK&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
That should conclude importing of the project, the x353.ise will be created and you should be able to view/edit project files and run synthesis and implementation tools.&lt;br /&gt;
&lt;br /&gt;
==Simulating 10353 board FPGA with Icarus Verilog and GTKWave==&lt;br /&gt;
&lt;br /&gt;
The first step is to create a library of the Xilinx primitives that can be processed by Icarus Verilog. Unfortunately the library as provided with WebPACK is not immediately compatible with the Icarus Verilog simulator and we do not have a license to distribute the modified for Icarus version of the primitives source code.&lt;br /&gt;
&lt;br /&gt;
The library in question is installed as verilg/src/unisims directory of the top installation directory of Xilinx WebPACK (in my case it is /usr/local/Xilinx92). The [http://elphel.cvs.sourceforge.net/elphel/elphel353-7.1/fpga/Makefile?view=markup Makefile] (together with the [http://elphel.cvs.sourceforge.net/elphel/elphel353-7.1/fpga/unisims_patch.sh?view=markup unisims_patch.sh] script)  in the fpga subdirectory of the Elphel product source tree looks for the Xilinx WebPACK installation on the computer, copies unisims library directory to the fpga directory and patches the files for compatibility with Icarus Verilog. Some modifications (like removing of qualifiers &amp;quot;integer&amp;quot; an &amp;quot;real&amp;quot; after the keywords &amp;quot;parameter&amp;quot; and &amp;quot;localparam&amp;quot; currently not supported by Icarus) are applied to all files, other are specific patches to the files used so far in the project. That means that if you use some other unisims primitives in addition to those already used in the x3x3 project they may also need some patching.&lt;br /&gt;
&lt;br /&gt;
We do not know when any of the files we used will be modified by Xilinx, but we&#039;ll try to maintain the patches current. Please notify Elphel developers if you will have incompatibility problems.&lt;br /&gt;
&lt;br /&gt;
If the script can not locate the Xilinx WebPACK installation during software build, the empty &amp;quot;unisims&amp;quot; directory is created under &amp;quot;fpga&amp;quot; and during next runs of &amp;quot;make&amp;quot; it will skip searching for the unisims library. In the case you installed WebPACK after the first run of &amp;quot;make&amp;quot; or have several different versions of WebPACK you may want to navigate to fpga directory and run&lt;br /&gt;
 make; make install&lt;br /&gt;
there (if you did not build Elphel software in the current session you may need to run &lt;br /&gt;
. ./init_env&lt;br /&gt;
(dot-space-dot-slash-init_env) in the top installation directory (called &amp;quot;elphel353&amp;quot; by default), one level above &amp;quot;fpga&amp;quot; one.&lt;br /&gt;
&lt;br /&gt;
When the unisims library is ready you may try the simulation itself. Navigate to the fpga/x3x3 and run&lt;br /&gt;
./[http://elphel.cvs.sourceforge.net/elphel/elphel353-7.1/fpga/x3x3/x353_sim.sh?view=markup x353_sim.sh]&lt;br /&gt;
As a result you will see some output (it may make sense to set console history to &amp;quot;unlimited&amp;quot;), there should be no errors (at least until until the &amp;quot;Runnig ...&amp;quot;):&lt;br /&gt;
 removed `x353.lxt&#039;&lt;br /&gt;
 Using UNISIM library ../unisims&lt;br /&gt;
 Icarus Verilog version 0.8.6 ($Name:  $)&lt;br /&gt;
 Copyright 1998-2003 Stephen Williams&lt;br /&gt;
  This program is free software; you can redistribute it and/or modify&lt;br /&gt;
  it under the terms of the GNU General Public License as published by&lt;br /&gt;
  the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
  (at your option) any later version.&lt;br /&gt;
  This program is distributed in the hope that it will be useful,&lt;br /&gt;
  but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
  GNU General Public License for more details.&lt;br /&gt;
  You should have received a copy of the GNU General Public License&lt;br /&gt;
  along with this program; if not, write to the Free Software&lt;br /&gt;
  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA&lt;br /&gt;
 translate: /usr/local/lib/ivl/ivlpp  -v -L -D__ICARUS__=1 -f/tmp/ivrlg60f03525  -Dlegacy_model | /usr/local/lib/ivl/ivl -v -C/tmp/ivrlh60f03525 -C/usr/local/lib/ivl/vvp.conf -- -&lt;br /&gt;
 Icarus Verilog Preprocessor version $Name:  $ $State: Exp $&lt;br /&gt;
 Copyright (c) 1999 Stephen Williams (steve@icarus.com)&lt;br /&gt;
  This program is free software; you can redistribute it and/or modify&lt;br /&gt;
  it under the terms of the GNU General Public License as published by&lt;br /&gt;
  the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
  (at your option) any later version.&lt;br /&gt;
  This program is distributed in the hope that it will be useful,&lt;br /&gt;
  but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
  GNU General Public License for more details.&lt;br /&gt;
  You should have received a copy of the GNU General Public License&lt;br /&gt;
  along with this program; if not, write to the Free Software&lt;br /&gt;
  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA&lt;br /&gt;
 Indexing library: ../unisims&lt;br /&gt;
 /usr/local/lib/ivl/system.sft: Processing System Function Table file.&lt;br /&gt;
 Using language generation: SystemVerilog 3.0&lt;br /&gt;
 PARSING INPUT&lt;br /&gt;
 ... done, 0.08 seconds.&lt;br /&gt;
 ELABORATING DESIGN&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/PULLDOWN.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/FD.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/FD_1.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/IOBUF.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/FDDRCPE.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/FDCPE.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/FDCPE_1.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/OBUF.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/KEEPER.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/IBUF.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/LD.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/BUFG.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/FDCE.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/LUT4.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/BUF.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/FDE_1.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/FDCE_1.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/IBUFDS.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/IBUFG.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/DCM.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/BUFGMUX.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/OBUFDS.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/SRL16.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/FDE.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/PULLUP.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/RAMB16_S18_S36.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/RAMB16_S9_S36.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/RAMB16_S36_S36.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/SRL16_1.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/MULT18X18.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/RAMB16_S18_S18.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/FDC_1.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/FDC.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/RAMB16_S9_S9.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/RAM16X1D.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/RAMB4_S8_S8.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/ROM32X1.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/MULT18X18SIO.v&lt;br /&gt;
 Executing: /usr/local/lib/ivl/ivlpp -D__ICARUS__ -L   -Dlegacy_model ../unisims/LD_1.v&lt;br /&gt;
  ... done, 0.64 seconds.&lt;br /&gt;
 RUNNING FUNCTORS&lt;br /&gt;
 -F cprop ...&lt;br /&gt;
 -F nodangle ...&lt;br /&gt;
 ... 1 iterations deleted 3265 dangling signals and 1210 events. (count=3067)&lt;br /&gt;
 ... 2 iterations deleted 3265 dangling signals and 1210 events. (count=0)&lt;br /&gt;
 ... done, 0.06 seconds.&lt;br /&gt;
 CODE GENERATION -t dll&lt;br /&gt;
 ... invoking target_design&lt;br /&gt;
 ... done, 0.93 seconds.&lt;br /&gt;
 STATISTICS&lt;br /&gt;
 lex_string: add_count=15385 hit_count=41544&lt;br /&gt;
 Compiling VVP ...&lt;br /&gt;
 Compile cleanup...&lt;br /&gt;
 ... Linking&lt;br /&gt;
 ... Removing symbol tables&lt;br /&gt;
 ...   347402 functors&lt;br /&gt;
               9435 table&lt;br /&gt;
                177 bufif&lt;br /&gt;
                859 resolv&lt;br /&gt;
             328086 variable&lt;br /&gt;
 ...   222122 opcodes (5357568 bytes)&lt;br /&gt;
 ...    12573 nets&lt;br /&gt;
 ...       28 memories&lt;br /&gt;
 ...     1290 scopes&lt;br /&gt;
 ... 1.47609 seconds, 57292.0/38120.0/1356.0 KBytes size/rss/shared&lt;br /&gt;
 Running ...&lt;br /&gt;
After the simulation itself will start that generates &amp;quot;x353.lxt&amp;quot; (older version if any of that file was removed at the start of the script). It will take some time to simulate a fraction of a millisecond (as simulation is about a million times slower than the real time) and then the&lt;br /&gt;
 gtkwave x353.lxt x353_1.sav &amp;amp;&lt;br /&gt;
command will be executed that should open the waveform viewer. In addition to the simulation result &amp;quot;x353.lxt&amp;quot; the viewer uses &amp;quot;[http://elphel.cvs.sourceforge.net/elphel/elphel353-7.1/fpga/x3x3/x353_1.sav?view=markup x353_1.sav]&amp;quot; - file that contains viewer state with some signals selected and grouped. GTKWave allows you to create, save and read back such files.&lt;br /&gt;
&lt;br /&gt;
You may change the simulation sequence by modifying the file [http://elphel.cvs.sourceforge.net/elphel/elphel353-7.1/fpga/x3x3/x353_1.tf?view=markup fpga/x3x3/x353_1.tf] or creating a new simulation sequence and modifying the [http://elphel.cvs.sourceforge.net/elphel/elphel353-7.1/fpga/x3x3/x353_sim.sh?view=markup fpga/x3x3/x353_sim.sh] script to use that file instead of the [http://elphel.cvs.sourceforge.net/elphel/elphel353-7.1/fpga/x3x3/x353_1.tf?view=markup fpga/x3x3/x353_1.tf].&lt;/div&gt;</summary>
		<author><name>Okdzhimiev</name></author>
	</entry>
</feed>