<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wikis.ece.iastate.edu/cpre584/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ogamal</id>
	<title>Cpre584 - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wikis.ece.iastate.edu/cpre584/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ogamal"/>
	<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Special:Contributions/Ogamal"/>
	<updated>2026-07-15T06:55:43Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Convey_PDK_Tutorial&amp;diff=953</id>
		<title>Convey PDK Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Convey_PDK_Tutorial&amp;diff=953"/>
		<updated>2015-09-04T03:50:40Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Media:ConveyTutorial1.pdf | Convey Tutorial 1: Bit Shuffler (PDF)]] &lt;br /&gt;
&lt;br /&gt;
* [[Media:Tutorial2.pdf | Convey Tutorial 2: Floating Point Addition Tutorial (PDF)]]&lt;br /&gt;
&lt;br /&gt;
* [http://github.com/zambreno/RCL/raw/master/cnyScripts.zip Required Scripts (Script for generating new convey projects/personalities)]&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Convey_PDK_Tutorial&amp;diff=952</id>
		<title>Convey PDK Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Convey_PDK_Tutorial&amp;diff=952"/>
		<updated>2015-09-04T03:50:15Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Media:ConveyTutorial1.pdf | Convey Tutorial 1: Bit Shuffler (PDF)]] &lt;br /&gt;
&lt;br /&gt;
* [[Media:Tutorial2.pdf | Convey Tutorial 2: Floating Point Addition Tutorial (PDF)]]&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/zambreno/RCL/raw/master/cnyScripts.zip Required Scripts (Script for generating new convey projects/personalities)]&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Convey_PDK_Tutorial&amp;diff=951</id>
		<title>Convey PDK Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Convey_PDK_Tutorial&amp;diff=951"/>
		<updated>2015-09-04T03:49:59Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Media:ConveyTutorial1.pdf | Convey Tutorial 1: Bit Shuffler (PDF)]] &lt;br /&gt;
&lt;br /&gt;
[[Media:Tutorial2.pdf | Convey Tutorial 2: Floating Point Addition Tutorial (PDF)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/zambreno/RCL/raw/master/cnyScripts.zip Required Scripts (Script for generating new convey projects/personalities)]&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Convey_PDK_Tutorial&amp;diff=950</id>
		<title>Convey PDK Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Convey_PDK_Tutorial&amp;diff=950"/>
		<updated>2015-09-04T03:49:50Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Media:ConveyTutorial1.pdf | Convey Tutorial 1: Bit Shuffler (PDF)]] &lt;br /&gt;
[[Media:Tutorial2.pdf | Convey Tutorial 2: Floating Point Addition Tutorial (PDF)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/zambreno/RCL/raw/master/cnyScripts.zip Required Scripts (Script for generating new convey projects/personalities)]&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Convey_PDK_Tutorial&amp;diff=949</id>
		<title>Convey PDK Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Convey_PDK_Tutorial&amp;diff=949"/>
		<updated>2015-09-04T03:48:49Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Media:ConveyTutorial1.pdf | Tutorial 1: Bit Shuffler (PDF)]] &lt;br /&gt;
&lt;br /&gt;
[https://github.com/zambreno/RCL/raw/master/cnyScripts.zip Required Scripts (Script for generating new convey projects/personalities)]&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Convey_PDK_Tutorial&amp;diff=948</id>
		<title>Convey PDK Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Convey_PDK_Tutorial&amp;diff=948"/>
		<updated>2015-09-04T03:48:12Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Media:ConveyTutorial1.pdf | Tutorial PDF]] &lt;br /&gt;
&lt;br /&gt;
[https://github.com/zambreno/RCL/raw/master/cnyScripts.zip Required Scripts (Script for generating new convey projects/personalities)]&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Convey_PDK_Tutorial&amp;diff=947</id>
		<title>Convey PDK Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Convey_PDK_Tutorial&amp;diff=947"/>
		<updated>2015-09-04T03:47:56Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Media:ConveyTutorial1.pdf | Tutorial PDF]] &lt;br /&gt;
&lt;br /&gt;
[https://github.com/zambreno/RCL/raw/master/cnyScripts.zipz Required Scripts (Script for generating new convey projects/personalities)]&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=927</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=927"/>
		<updated>2013-04-25T02:09:26Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: /* General FAQ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General FAQ ==&lt;br /&gt;
=== How to start my own custom personality project? ===&lt;br /&gt;
We have two sample PDK examples. You can either use the &#039;&#039;&#039;cnyScript&#039;&#039;&#039; as described in this tutorial: [[Convey PDK Tutorial]] or use the Simpleton sample which is described in: [[Analyze the Simpleton Basic App]].&lt;br /&gt;
&lt;br /&gt;
=== How to add new verilog files or directories to a PDK project? ===&lt;br /&gt;
By default, the PDK looks like the project/verilog directory and compiles all .v files found there.  To add other Verilog directories, use this makefile variable:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;nowiki&amp;gt;USER_VERILOG_DIRS  += ../../verilog&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Why is Simulation/building bit file/ (insert here) so slow?===&lt;br /&gt;
If you are using the the cyfiles drive to do your work, these activities all seem to run much slower. The reason is that the cyfiles is a network mapped drive, so all reads/writes will have to traverse the network. To get around this, you can use the /tmp/ directory. You can copy your project to a directory, such as /tmp/.[username]/[projectfile]. The tmp directories are occasionally cleaned out, so do not leave unsaved work there. [[Media:UseTmpScript.sh | Here‎]] is a script that will copy a give folder the the path of /tmp/.[username]/[name of folder]. The script will check to see if there is already a directory there with the same name, and if so it will alert the user. If not it will just copy the directory. *IMPORTANT* Ensure to make a copy of any changes back into your actual working directory, since the /tmp/ directory is routinely cleaned up.&lt;br /&gt;
&lt;br /&gt;
== Simulator Related ==&lt;br /&gt;
&lt;br /&gt;
==== Where can I find the personality signals? ====&lt;br /&gt;
You can find your custom personality signals in the &amp;quot;sim&amp;quot; window in ModelSim under &amp;lt;code&amp;gt;testbench &amp;gt; cae_fpga0 &amp;gt; ae_top &amp;gt; core &amp;gt; cae_pers&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Why ModelSim ends the simulation before my design finish? ====&lt;br /&gt;
Convey simulations are set to end after a specific time period. To change this time, modify the following line in the file &amp;lt;code&amp;gt;sim/sc.config&amp;lt;/code&amp;gt; in your pdk project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;set DeadMan 10000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How to keep the waves I simulated? ====&lt;br /&gt;
After adding the signals to the wave window, make sure to click anywhere in the waves window. Then, click the save button and save the current signals as &amp;quot;do&amp;quot; file. Next time you want to show the previous signals, open ModelSim using the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;vsim &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in the ModelSim command-line, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;do sim/wave.do&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, click the &amp;quot;open&amp;quot; button and open the &amp;quot;vsim.wlf&amp;quot; file in the &amp;quot;sim&amp;quot; directory of your project.&lt;br /&gt;
&lt;br /&gt;
==== How to run Modelsim GUI while simulating? ====&lt;br /&gt;
You may run the simulation in interactive mode by adding the following line to the makefile in the sim directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;USER_SIM_OPTIONS = -gui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another option is to edit the test bench (sim/tb_user.v shown below) to dump the waveforms to a file, then run the hardware simulator via command line, and finally open up the waveform file (vsim -v ./sim/vsim.wlf).  This has the benefit of dumping all the signals (if your wave.do file was missing something, you&#039;d have to rerun the simulation).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;`timescale 1 ns / 1 ps&lt;br /&gt;
&lt;br /&gt;
module tb_user();&lt;br /&gt;
&lt;br /&gt;
  initial begin&lt;br /&gt;
    // Insert user code here, such as signal dumping&lt;br /&gt;
    // set CNY_PDK_TB_USER_VLOG variable in sim/makefile&lt;br /&gt;
`include &amp;quot;PDK_SIM_CONFIG.vh&amp;quot;&lt;br /&gt;
`ifdef AE0_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga0.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE1_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga1.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE2_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga2.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE3_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga3.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
endmodule&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How to use UNISIM library in simulator? ====&lt;br /&gt;
Firstly, make sure to have your Coregen modules in the&amp;lt;code&amp;gt; coregen/&amp;lt;/code&amp;gt; folder in your PDK project. Then, navigate to the &amp;lt;code&amp;gt;sim/&amp;lt;/code&amp;gt; in your PDK project and execute the command:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt; vmap unisim /remote/Xilinx/13.4/ISE/vhdl/mti_se/10.1c/lin64/unisim/ &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, you may want to include your module in your project&#039;s &amp;lt;code&amp;gt;Makefile.include&amp;lt;/code&amp;gt; as follows:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;USER_VHDL_FILES += ../coregen/fifo_64_1024.vhd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Emulator Related ==&lt;br /&gt;
&lt;br /&gt;
==== How to read AEG registers in the emulator? ====&lt;br /&gt;
You can use the following function:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
uint64 AegRead(int aeId, int aegIdx);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How to read/write the memory in the emulator? ====&lt;br /&gt;
You can use the functions AeMemLoad and AeMemStore to read and write from/to the memory as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
bool AeMemLoad (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data); &amp;lt;br /&amp;gt;&lt;br /&gt;
bool AeMemStore (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also you can get &amp;lt;code&amp;gt;mcId&amp;lt;/code&amp;gt; using the function &amp;lt;code&amp;gt;McNum(addr)&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=926</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=926"/>
		<updated>2013-04-25T02:08:57Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: /* How to start my own custom personality project? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General FAQ ==&lt;br /&gt;
===Why is Simulation/building bit file/ (insert here) so slow?===&lt;br /&gt;
If you are using the the cyfiles drive to do your work, these activities all seem to run much slower. The reason is that the cyfiles is a network mapped drive, so all reads/writes will have to traverse the network. To get around this, you can use the /tmp/ directory. You can copy your project to a directory, such as /tmp/.[username]/[projectfile]. The tmp directories are occasionally cleaned out, so do not leave unsaved work there. [[Media:UseTmpScript.sh | Here‎]] is a script that will copy a give folder the the path of /tmp/.[username]/[name of folder]. The script will check to see if there is already a directory there with the same name, and if so it will alert the user. If not it will just copy the directory. *IMPORTANT* Ensure to make a copy of any changes back into your actual working directory, since the /tmp/ directory is routinely cleaned up.&lt;br /&gt;
&lt;br /&gt;
=== How to start my own custom personality project? ===&lt;br /&gt;
We have two sample PDK examples. You can either use the &#039;&#039;&#039;cnyScript&#039;&#039;&#039; as described in this tutorial: [[Convey PDK Tutorial]] or use the Simpleton sample which is described in: [[Analyze the Simpleton Basic App]].&lt;br /&gt;
&lt;br /&gt;
=== How to add new verilog files or directories to a PDK project? ===&lt;br /&gt;
By default, the PDK looks like the project/verilog directory and compiles all .v files found there.  To add other Verilog directories, use this makefile variable:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;nowiki&amp;gt;USER_VERILOG_DIRS  += ../../verilog&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Simulator Related ==&lt;br /&gt;
&lt;br /&gt;
==== Where can I find the personality signals? ====&lt;br /&gt;
You can find your custom personality signals in the &amp;quot;sim&amp;quot; window in ModelSim under &amp;lt;code&amp;gt;testbench &amp;gt; cae_fpga0 &amp;gt; ae_top &amp;gt; core &amp;gt; cae_pers&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Why ModelSim ends the simulation before my design finish? ====&lt;br /&gt;
Convey simulations are set to end after a specific time period. To change this time, modify the following line in the file &amp;lt;code&amp;gt;sim/sc.config&amp;lt;/code&amp;gt; in your pdk project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;set DeadMan 10000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How to keep the waves I simulated? ====&lt;br /&gt;
After adding the signals to the wave window, make sure to click anywhere in the waves window. Then, click the save button and save the current signals as &amp;quot;do&amp;quot; file. Next time you want to show the previous signals, open ModelSim using the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;vsim &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in the ModelSim command-line, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;do sim/wave.do&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, click the &amp;quot;open&amp;quot; button and open the &amp;quot;vsim.wlf&amp;quot; file in the &amp;quot;sim&amp;quot; directory of your project.&lt;br /&gt;
&lt;br /&gt;
==== How to run Modelsim GUI while simulating? ====&lt;br /&gt;
You may run the simulation in interactive mode by adding the following line to the makefile in the sim directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;USER_SIM_OPTIONS = -gui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another option is to edit the test bench (sim/tb_user.v shown below) to dump the waveforms to a file, then run the hardware simulator via command line, and finally open up the waveform file (vsim -v ./sim/vsim.wlf).  This has the benefit of dumping all the signals (if your wave.do file was missing something, you&#039;d have to rerun the simulation).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;`timescale 1 ns / 1 ps&lt;br /&gt;
&lt;br /&gt;
module tb_user();&lt;br /&gt;
&lt;br /&gt;
  initial begin&lt;br /&gt;
    // Insert user code here, such as signal dumping&lt;br /&gt;
    // set CNY_PDK_TB_USER_VLOG variable in sim/makefile&lt;br /&gt;
`include &amp;quot;PDK_SIM_CONFIG.vh&amp;quot;&lt;br /&gt;
`ifdef AE0_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga0.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE1_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga1.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE2_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga2.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE3_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga3.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
endmodule&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How to use UNISIM library in simulator? ====&lt;br /&gt;
Firstly, make sure to have your Coregen modules in the&amp;lt;code&amp;gt; coregen/&amp;lt;/code&amp;gt; folder in your PDK project. Then, navigate to the &amp;lt;code&amp;gt;sim/&amp;lt;/code&amp;gt; in your PDK project and execute the command:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt; vmap unisim /remote/Xilinx/13.4/ISE/vhdl/mti_se/10.1c/lin64/unisim/ &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, you may want to include your module in your project&#039;s &amp;lt;code&amp;gt;Makefile.include&amp;lt;/code&amp;gt; as follows:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;USER_VHDL_FILES += ../coregen/fifo_64_1024.vhd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Emulator Related ==&lt;br /&gt;
&lt;br /&gt;
==== How to read AEG registers in the emulator? ====&lt;br /&gt;
You can use the following function:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
uint64 AegRead(int aeId, int aegIdx);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How to read/write the memory in the emulator? ====&lt;br /&gt;
You can use the functions AeMemLoad and AeMemStore to read and write from/to the memory as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
bool AeMemLoad (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data); &amp;lt;br /&amp;gt;&lt;br /&gt;
bool AeMemStore (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also you can get &amp;lt;code&amp;gt;mcId&amp;lt;/code&amp;gt; using the function &amp;lt;code&amp;gt;McNum(addr)&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=921</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=921"/>
		<updated>2013-04-04T04:03:49Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: /* How to read/write the memory in the emulator? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General FAQ ==&lt;br /&gt;
===Why is Simulation/building bit file/ (insert here) so slow?===&lt;br /&gt;
If you are using the the cyfiles drive to do your work, these activities all seem to run much slower. The reason is that the cyfiles is a network mapped drive, so all reads/writes will have to traverse the network. To get around this, you can use the /tmp/ directory. You can copy your project to a directory, such as /tmp/.[username]/[projectfile]. The tmp directories are occasionally cleaned out, so do not leave unsaved work there. [[Media:UseTmpScript.sh | Here‎]] is a script that will copy a give folder the the path of /tmp/.[username]/[name of folder]. The script will check to see if there is already a directory there with the same name, and if so it will alert the user. If not it will just copy the directory. *IMPORTANT* Ensure to make a copy of any changes back into your actual working directory, since the /tmp/ directory is routinely cleaned up.&lt;br /&gt;
&lt;br /&gt;
=== How to start my own custom personality project? ===&lt;br /&gt;
Use the &#039;&#039;&#039;cnyScript&#039;&#039;&#039; as described in this tutorial: [[Convey PDK Tutorial]]&lt;br /&gt;
&lt;br /&gt;
=== How to add new verilog files or directories to a PDK project? ===&lt;br /&gt;
By default, the PDK looks like the project/verilog directory and compiles all .v files found there.  To add other Verilog directories, use this makefile variable:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;nowiki&amp;gt;USER_VERILOG_DIRS  += ../../verilog&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Simulator Related ==&lt;br /&gt;
&lt;br /&gt;
==== Where can I find the personality signals? ====&lt;br /&gt;
You can find your custom personality signals in the &amp;quot;sim&amp;quot; window in ModelSim under &amp;lt;code&amp;gt;testbench &amp;gt; cae_fpga0 &amp;gt; ae_top &amp;gt; core &amp;gt; cae_pers&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Why ModelSim ends the simulation before my design finish? ====&lt;br /&gt;
Convey simulations are set to end after a specific time period. To change this time, modify the following line in the file &amp;lt;code&amp;gt;sim/sc.config&amp;lt;/code&amp;gt; in your pdk project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;set DeadMan 10000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How to keep the waves I simulated? ====&lt;br /&gt;
After adding the signals to the wave window, make sure to click anywhere in the waves window. Then, click the save button and save the current signals as &amp;quot;do&amp;quot; file. Next time you want to show the previous signals, open ModelSim using the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;vsim &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in the ModelSim command-line, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;do sim/wave.do&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, click the &amp;quot;open&amp;quot; button and open the &amp;quot;vsim.wlf&amp;quot; file in the &amp;quot;sim&amp;quot; directory of your project.&lt;br /&gt;
&lt;br /&gt;
==== How to run Modelsim GUI while simulating? ====&lt;br /&gt;
You may run the simulation in interactive mode by adding the following line to the makefile in the sim directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;USER_SIM_OPTIONS = -gui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another option is to edit the test bench (sim/tb_user.v shown below) to dump the waveforms to a file, then run the hardware simulator via command line, and finally open up the waveform file (vsim -v ./sim/vsim.wlf).  This has the benefit of dumping all the signals (if your wave.do file was missing something, you&#039;d have to rerun the simulation).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;`timescale 1 ns / 1 ps&lt;br /&gt;
&lt;br /&gt;
module tb_user();&lt;br /&gt;
&lt;br /&gt;
  initial begin&lt;br /&gt;
    // Insert user code here, such as signal dumping&lt;br /&gt;
    // set CNY_PDK_TB_USER_VLOG variable in sim/makefile&lt;br /&gt;
`include &amp;quot;PDK_SIM_CONFIG.vh&amp;quot;&lt;br /&gt;
`ifdef AE0_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga0.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE1_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga1.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE2_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga2.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE3_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga3.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
endmodule&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How to use UNISIM library in simulator? ====&lt;br /&gt;
Firstly, make sure to have your Coregen modules in the&amp;lt;code&amp;gt; coregen/&amp;lt;/code&amp;gt; folder in your PDK project. Then, navigate to the &amp;lt;code&amp;gt;sim/&amp;lt;/code&amp;gt; in your PDK project and execute the command:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt; vmap unisim /remote/Xilinx/13.4/ISE/vhdl/mti_se/10.1c/lin64/unisim/ &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, you may want to include your module in your project&#039;s &amp;lt;code&amp;gt;Makefile.include&amp;lt;/code&amp;gt; as follows:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;USER_VHDL_FILES += ../coregen/fifo_64_1024.vhd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Emulator Related ==&lt;br /&gt;
&lt;br /&gt;
==== How to read AEG registers in the emulator? ====&lt;br /&gt;
You can use the following function:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
uint64 AegRead(int aeId, int aegIdx);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How to read/write the memory in the emulator? ====&lt;br /&gt;
You can use the functions AeMemLoad and AeMemStore to read and write from/to the memory as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
bool AeMemLoad (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data); &amp;lt;br /&amp;gt;&lt;br /&gt;
bool AeMemStore (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also you can get &amp;lt;code&amp;gt;mcId&amp;lt;/code&amp;gt; using the function &amp;lt;code&amp;gt;McNum(addr)&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=903</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=903"/>
		<updated>2013-02-26T23:40:45Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General FAQ ==&lt;br /&gt;
===Why is Simulation/building bit file/ (insert here) so slow?===&lt;br /&gt;
If you are using the the cyfiles drive to do your work, these activities all seem to run much slower. The reason is that the cyfiles is a network mapped drive, so all reads/writes will have to traverse the network. To get around this, you can use the /tmp/ directory. You can copy your project to a directory, such as /tmp/.[username]/[projectfile]. The tmp directories are occasionally cleaned out, so do not leave unsaved work there. [[Media:UseTmpScript.sh | Here‎]] is a script that will copy a give folder the the path of /tmp/.[username]/[name of folder]. The script will check to see if there is already a directory there with the same name, and if so it will alert the user. If not it will just copy the directory. *IMPORTANT* Ensure to make a copy of any changes back into your actual working directory, since the /tmp/ directory is routinely cleaned up.&lt;br /&gt;
&lt;br /&gt;
=== How to start my own custom personality project? ===&lt;br /&gt;
Use the &#039;&#039;&#039;cnyScript&#039;&#039;&#039; as described in this tutorial: [[Convey PDK Tutorial]]&lt;br /&gt;
&lt;br /&gt;
=== How to add new verilog files or directories to a PDK project? ===&lt;br /&gt;
By default, the PDK looks like the project/verilog directory and compiles all .v files found there.  To add other Verilog directories, use this makefile variable:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;nowiki&amp;gt;USER_VERILOG_DIRS  += ../../verilog&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Simulator Related ==&lt;br /&gt;
&lt;br /&gt;
==== Where can I find the personality signals? ====&lt;br /&gt;
You can find your custom personality signals in the &amp;quot;sim&amp;quot; window in ModelSim under &amp;lt;code&amp;gt;testbench &amp;gt; cae_fpga0 &amp;gt; ae_top &amp;gt; core &amp;gt; cae_pers&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Why ModelSim ends the simulation before my design finish? ====&lt;br /&gt;
Convey simulations are set to end after a specific time period. To change this time, modify the following line in the file &amp;lt;code&amp;gt;sim/sc.config&amp;lt;/code&amp;gt; in your pdk project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;set DeadMan 10000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How to keep the waves I simulated? ====&lt;br /&gt;
After adding the signals to the wave window, make sure to click anywhere in the waves window. Then, click the save button and save the current signals as &amp;quot;do&amp;quot; file. Next time you want to show the previous signals, open ModelSim using the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;vsim &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in the ModelSim command-line, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;do sim/wave.do&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, click the &amp;quot;open&amp;quot; button and open the &amp;quot;vsim.wlf&amp;quot; file in the &amp;quot;sim&amp;quot; directory of your project.&lt;br /&gt;
&lt;br /&gt;
==== How to run Modelsim GUI while simulating? ====&lt;br /&gt;
You may run the simulation in interactive mode by adding the following line to the makefile in the sim directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;USER_SIM_OPTIONS = -gui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another option is to edit the test bench (sim/tb_user.v shown below) to dump the waveforms to a file, then run the hardware simulator via command line, and finally open up the waveform file (vsim -v ./sim/vsim.wlf).  This has the benefit of dumping all the signals (if your wave.do file was missing something, you&#039;d have to rerun the simulation).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;`timescale 1 ns / 1 ps&lt;br /&gt;
&lt;br /&gt;
module tb_user();&lt;br /&gt;
&lt;br /&gt;
  initial begin&lt;br /&gt;
    // Insert user code here, such as signal dumping&lt;br /&gt;
    // set CNY_PDK_TB_USER_VLOG variable in sim/makefile&lt;br /&gt;
`include &amp;quot;PDK_SIM_CONFIG.vh&amp;quot;&lt;br /&gt;
`ifdef AE0_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga0.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE1_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga1.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE2_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga2.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE3_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga3.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
endmodule&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How to use UNISIM library in simulator? ====&lt;br /&gt;
Firstly, make sure to have your Coregen modules in the&amp;lt;code&amp;gt; coregen/&amp;lt;/code&amp;gt; folder in your PDK project. Then, navigate to the &amp;lt;code&amp;gt;sim/&amp;lt;/code&amp;gt; in your PDK project and execute the command:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt; vmap unisim /remote/Xilinx/13.4/ISE/vhdl/mti_se/10.1c/lin64/unisim/ &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, you may want to include your module in your project&#039;s &amp;lt;code&amp;gt;Makefile.include&amp;lt;/code&amp;gt; as follows:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;USER_VHDL_FILES += ../coregen/fifo_64_1024.vhd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Emulator Related ==&lt;br /&gt;
&lt;br /&gt;
==== How to read AEG registers in the emulator? ====&lt;br /&gt;
You can use the following function:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
uint64 AegRead(int aeId, int aegIdx);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How to read/write the memory in the emulator? ====&lt;br /&gt;
You can use the functions AeMemLoad and AeMemStore to read and write from/to the memory as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
bool AeMemLoad (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data); &amp;lt;br /&amp;gt;&lt;br /&gt;
bool AeMemStore (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=902</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=902"/>
		<updated>2013-02-26T23:38:51Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: /* Simulator Related */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General FAQ ==&lt;br /&gt;
===Why is Simulation/building bit file/ (insert here) so slow?===&lt;br /&gt;
If you are using the the cyfiles drive to do your work, these activities all seem to run much slower. The reason is that the cyfiles is a network mapped drive, so all reads/writes will have to traverse the network. To get around this, you can use the /tmp/ directory. You can copy your project to a directory, such as /tmp/.[username]/[projectfile]. The tmp directories are occasionally cleaned out, so do not leave unsaved work there. [[Media:UseTmpScript.sh | Here‎]] is a script that will copy a give folder the the path of /tmp/.[username]/[name of folder]. The script will check to see if there is already a directory there with the same name, and if so it will alert the user. If not it will just copy the directory. *IMPORTANT* Ensure to make a copy of any changes back into your actual working directory, since the /tmp/ directory is routinely cleaned up.&lt;br /&gt;
&lt;br /&gt;
=== How to start my own custom personality project? ===&lt;br /&gt;
Use the &#039;&#039;&#039;cnyScript&#039;&#039;&#039; as described in this tutorial: [[Convey PDK Tutorial]]&lt;br /&gt;
&lt;br /&gt;
=== How to add new verilog files or directories to a PDK project? ===&lt;br /&gt;
By default, the PDK looks like the project/verilog directory and compiles all .v files found there.  To add other Verilog directories, use this makefile variable:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;nowiki&amp;gt;USER_VERILOG_DIRS  += ../../verilog&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Simulator Related ==&lt;br /&gt;
&lt;br /&gt;
==== Where can I find the personality signals? ====&lt;br /&gt;
You can find your custom personality signals in the &amp;quot;sim&amp;quot; window in ModelSim under &amp;lt;code&amp;gt;testbench &amp;gt; cae_fpga0 &amp;gt; ae_top &amp;gt; core &amp;gt; cae_pers&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Why ModelSim ends the simulation before my design finish? ====&lt;br /&gt;
Convey simulations are set to end after a specific time period. To change this time, modify the following line in the file &amp;lt;code&amp;gt;sim/sc.config&amp;lt;/code&amp;gt; in your pdk project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;set DeadMan 10000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How to keep the waves I simulated? ====&lt;br /&gt;
After adding the signals to the wave window, make sure to click anywhere in the waves window. Then, click the save button and save the current signals as &amp;quot;do&amp;quot; file. Next time you want to show the previous signals, open ModelSim using the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;vsim &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in the ModelSim command-line, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;do sim/wave.do&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, click the &amp;quot;open&amp;quot; button and open the &amp;quot;vsim.wlf&amp;quot; file in the &amp;quot;sim&amp;quot; directory of your project.&lt;br /&gt;
&lt;br /&gt;
==== How to run Modelsim GUI while simulating? ====&lt;br /&gt;
You may run the simulation in interactive mode by adding the following line to the makefile in the sim directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;USER_SIM_OPTIONS = -gui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another option is to edit the test bench (sim/tb_user.v shown below) to dump the waveforms to a file, then run the hardware simulator via command line, and finally open up the waveform file (vsim -v ./sim/vsim.wlf).  This has the benefit of dumping all the signals (if your wave.do file was missing something, you&#039;d have to rerun the simulation).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;`timescale 1 ns / 1 ps&lt;br /&gt;
&lt;br /&gt;
module tb_user();&lt;br /&gt;
&lt;br /&gt;
  initial begin&lt;br /&gt;
    // Insert user code here, such as signal dumping&lt;br /&gt;
    // set CNY_PDK_TB_USER_VLOG variable in sim/makefile&lt;br /&gt;
`include &amp;quot;PDK_SIM_CONFIG.vh&amp;quot;&lt;br /&gt;
`ifdef AE0_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga0.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE1_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga1.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE2_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga2.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE3_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga3.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
endmodule&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== How to use UNISIM library in simulator? ====&lt;br /&gt;
Firstly, make sure to have your Coregen modules in the&amp;lt;code&amp;gt; coregen/&amp;lt;/code&amp;gt; folder in your PDK project. Then, navigate to the &amp;lt;code&amp;gt;sim/&amp;lt;/code&amp;gt; in your PDK project and execute the command:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt; vmap unisim /remote/Xilinx/13.4/ISE/vhdl/mti_se/10.1c/lin64/unisim/ &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, you may want to include your module in your project&#039;s &amp;lt;code&amp;gt;Makefile.include&amp;lt;/code&amp;gt; as follows:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;USER_VHDL_FILES += ../coregen/fifo_64_1024.vhd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Emulator Related ==&lt;br /&gt;
&lt;br /&gt;
==== How to read AEG registers in the emulator? ====&lt;br /&gt;
You can use the following function:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
uint64 AegRead(int aeId, int aegIdx);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How to read/write the memory in the emulator? ====&lt;br /&gt;
You can use the functions AeMemLoad and AeMemStore to read and write from/to the memory as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
bool AeMemLoad (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data); &amp;lt;br /&amp;gt;&lt;br /&gt;
bool AeMemStore (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=884</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=884"/>
		<updated>2013-02-14T00:30:34Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: /* Why ModelSim ends the simulation before my design finish? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General FAQ ==&lt;br /&gt;
===Why is Simulation/building bit file/ (insert here) so slow?===&lt;br /&gt;
If you are using the the cyfiles drive to do your work, these activities all seem to run much slower. The reason is that the cyfiles is a network mapped drive, so all reads/writes will have to traverse the network. To get around this, you can use the /tmp/ directory. You can copy your project to a directory, such as /tmp/.[username]/[projectfile]. The tmp directories are occasionally cleaned out, so do not leave unsaved work there. [[Media:UseTmpScript.sh | Here‎]] is a script that will copy a give folder the the path of /tmp/.[username]/[name of folder]. The script will check to see if there is already a directory there with the same name, and if so it will alert the user. If not it will just copy the directory. *IMPORTANT* Ensure to make a copy of any changes back into your actual working directory, since the /tmp/ directory is routinely cleaned up.&lt;br /&gt;
&lt;br /&gt;
=== How to start my own custom personality project? ===&lt;br /&gt;
Use the &#039;&#039;&#039;cnyScript&#039;&#039;&#039; as described in this tutorial: [[Convey PDK Tutorial]]&lt;br /&gt;
&lt;br /&gt;
=== How to add new verilog files or directories to a PDK project? ===&lt;br /&gt;
By default, the PDK looks like the project/verilog directory and compiles all .v files found there.  To add other Verilog directories, use this makefile variable:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;nowiki&amp;gt;USER_VERILOG_DIRS  += ../../verilog&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Simulator Related ==&lt;br /&gt;
&lt;br /&gt;
==== Where can I find the personality signals? ====&lt;br /&gt;
You can find your custom personality signals in the &amp;quot;sim&amp;quot; window in ModelSim under &amp;lt;code&amp;gt;testbench &amp;gt; cae_fpga0 &amp;gt; ae_top &amp;gt; core &amp;gt; cae_pers&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Why ModelSim ends the simulation before my design finish? ====&lt;br /&gt;
Convey simulations are set to end after a specific time period. To change this time, modify the following line in the file &amp;lt;code&amp;gt;sim/sc.config&amp;lt;/code&amp;gt; in your pdk project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;set DeadMan 10000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How to keep the waves I simulated? ====&lt;br /&gt;
After adding the signals to the wave window, make sure to click anywhere in the waves window. Then, click the save button and save the current signals as &amp;quot;do&amp;quot; file. Next time you want to show the previous signals, open ModelSim using the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;vsim &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in the ModelSim command-line, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;do sim/wave.do&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, click the &amp;quot;open&amp;quot; button and open the &amp;quot;vsim.wlf&amp;quot; file in the &amp;quot;sim&amp;quot; directory of your project.&lt;br /&gt;
&lt;br /&gt;
==== How to run Modelsim GUI while simulating? ====&lt;br /&gt;
You may run the simulation in interactive mode by adding the following line to the makefile in the sim directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;USER_SIM_OPTIONS = -gui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another option is to edit the test bench (sim/tb_user.v shown below) to dump the waveforms to a file, then run the hardware simulator via command line, and finally open up the waveform file (vsim -v ./sim/vsim.wlf).  This has the benefit of dumping all the signals (if your wave.do file was missing something, you&#039;d have to rerun the simulation).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;`timescale 1 ns / 1 ps&lt;br /&gt;
&lt;br /&gt;
module tb_user();&lt;br /&gt;
&lt;br /&gt;
  initial begin&lt;br /&gt;
    // Insert user code here, such as signal dumping&lt;br /&gt;
    // set CNY_PDK_TB_USER_VLOG variable in sim/makefile&lt;br /&gt;
`include &amp;quot;PDK_SIM_CONFIG.vh&amp;quot;&lt;br /&gt;
`ifdef AE0_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga0.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE1_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga1.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE2_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga2.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE3_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga3.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
endmodule&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Emulator Related ==&lt;br /&gt;
&lt;br /&gt;
==== How to read AEG registers in the emulator? ====&lt;br /&gt;
You can use the following function:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
uint64 AegRead(int aeId, int aegIdx);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How to read/write the memory in the emulator? ====&lt;br /&gt;
You can use the functions AeMemLoad and AeMemStore to read and write from/to the memory as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
bool AeMemLoad (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data); &amp;lt;br /&amp;gt;&lt;br /&gt;
bool AeMemStore (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=883</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=883"/>
		<updated>2013-02-14T00:30:13Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: /* Simulator Related */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General FAQ ==&lt;br /&gt;
===Why is Simulation/building bit file/ (insert here) so slow?===&lt;br /&gt;
If you are using the the cyfiles drive to do your work, these activities all seem to run much slower. The reason is that the cyfiles is a network mapped drive, so all reads/writes will have to traverse the network. To get around this, you can use the /tmp/ directory. You can copy your project to a directory, such as /tmp/.[username]/[projectfile]. The tmp directories are occasionally cleaned out, so do not leave unsaved work there. [[Media:UseTmpScript.sh | Here‎]] is a script that will copy a give folder the the path of /tmp/.[username]/[name of folder]. The script will check to see if there is already a directory there with the same name, and if so it will alert the user. If not it will just copy the directory. *IMPORTANT* Ensure to make a copy of any changes back into your actual working directory, since the /tmp/ directory is routinely cleaned up.&lt;br /&gt;
&lt;br /&gt;
=== How to start my own custom personality project? ===&lt;br /&gt;
Use the &#039;&#039;&#039;cnyScript&#039;&#039;&#039; as described in this tutorial: [[Convey PDK Tutorial]]&lt;br /&gt;
&lt;br /&gt;
=== How to add new verilog files or directories to a PDK project? ===&lt;br /&gt;
By default, the PDK looks like the project/verilog directory and compiles all .v files found there.  To add other Verilog directories, use this makefile variable:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;nowiki&amp;gt;USER_VERILOG_DIRS  += ../../verilog&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Simulator Related ==&lt;br /&gt;
&lt;br /&gt;
==== Where can I find the personality signals? ====&lt;br /&gt;
You can find your custom personality signals in the &amp;quot;sim&amp;quot; window in ModelSim under &amp;lt;code&amp;gt;testbench &amp;gt; cae_fpga0 &amp;gt; ae_top &amp;gt; core &amp;gt; cae_pers&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Why ModelSim ends the simulation before my design finish? ====&lt;br /&gt;
Convey simulations are set to end after a specific time period. To change this time, modify the following line in the file &amp;lt;code&amp;gt;sim/sc.config&amp;lt;/code&amp;gt; in your pdk project:&lt;br /&gt;
&amp;lt;code&amp;gt;set DeadMan 10000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How to keep the waves I simulated? ====&lt;br /&gt;
After adding the signals to the wave window, make sure to click anywhere in the waves window. Then, click the save button and save the current signals as &amp;quot;do&amp;quot; file. Next time you want to show the previous signals, open ModelSim using the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;vsim &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in the ModelSim command-line, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;do sim/wave.do&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, click the &amp;quot;open&amp;quot; button and open the &amp;quot;vsim.wlf&amp;quot; file in the &amp;quot;sim&amp;quot; directory of your project.&lt;br /&gt;
&lt;br /&gt;
==== How to run Modelsim GUI while simulating? ====&lt;br /&gt;
You may run the simulation in interactive mode by adding the following line to the makefile in the sim directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;USER_SIM_OPTIONS = -gui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another option is to edit the test bench (sim/tb_user.v shown below) to dump the waveforms to a file, then run the hardware simulator via command line, and finally open up the waveform file (vsim -v ./sim/vsim.wlf).  This has the benefit of dumping all the signals (if your wave.do file was missing something, you&#039;d have to rerun the simulation).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;`timescale 1 ns / 1 ps&lt;br /&gt;
&lt;br /&gt;
module tb_user();&lt;br /&gt;
&lt;br /&gt;
  initial begin&lt;br /&gt;
    // Insert user code here, such as signal dumping&lt;br /&gt;
    // set CNY_PDK_TB_USER_VLOG variable in sim/makefile&lt;br /&gt;
`include &amp;quot;PDK_SIM_CONFIG.vh&amp;quot;&lt;br /&gt;
`ifdef AE0_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga0.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE1_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga1.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE2_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga2.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE3_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga3.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
endmodule&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Emulator Related ==&lt;br /&gt;
&lt;br /&gt;
==== How to read AEG registers in the emulator? ====&lt;br /&gt;
You can use the following function:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
uint64 AegRead(int aeId, int aegIdx);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How to read/write the memory in the emulator? ====&lt;br /&gt;
You can use the functions AeMemLoad and AeMemStore to read and write from/to the memory as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
bool AeMemLoad (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data); &amp;lt;br /&amp;gt;&lt;br /&gt;
bool AeMemStore (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Adding_VHDL_Files_to_a_Project&amp;diff=882</id>
		<title>Adding VHDL Files to a Project</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Adding_VHDL_Files_to_a_Project&amp;diff=882"/>
		<updated>2013-02-13T08:46:52Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: /* Instantiation in Verilog */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using Your VHDL Module In The Top Level cae_pers.v File==&lt;br /&gt;
=== Entity Definition ===&lt;br /&gt;
&lt;br /&gt;
 entity test is&lt;br /&gt;
 port(&lt;br /&gt;
      in1 : in std_logic;&lt;br /&gt;
      in2 : in std_logic;&lt;br /&gt;
      out1: out std_logic);&lt;br /&gt;
 end entity;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Instantiation in Verilog ===&lt;br /&gt;
&lt;br /&gt;
*It will look exactly like any other module instantiation in Verilog.&lt;br /&gt;
&amp;lt;code&amp;gt; test t1(&lt;br /&gt;
      .in1(myInput),&lt;br /&gt;
      .in2(myOtherInput),&lt;br /&gt;
      .out(myOutput)&lt;br /&gt;
      );&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Another easier way is to use this [[Media:Vhd2v isnt.txt|Python script to generate instantiation code in Verilog]]. Use the following command:&lt;br /&gt;
&amp;lt;code&amp;gt; source cny_Env&lt;br /&gt;
 $ mv ./vhd2v_inst.txt /.vhd2v_isnt.py&lt;br /&gt;
 $ ./vhd2v_inst.py &amp;lt;filename&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Module With Vectors ===&lt;br /&gt;
*If we change the earlier definition to look like the following&lt;br /&gt;
 entity testWithVector is&lt;br /&gt;
 port(&lt;br /&gt;
      in1 : in std_logic_vector(63 downto 0);&lt;br /&gt;
      in2 : in std_logic_vector(63 downto 0);&lt;br /&gt;
      out1: out std_logic);&lt;br /&gt;
 end entity;&lt;br /&gt;
*Notice that the expected input is a 64 bit wide signal path&lt;br /&gt;
*Assume that you have a Verilog reg as follows&lt;br /&gt;
 reg [63:0] myReg;&lt;br /&gt;
 reg [63:0] myOtherReg;&lt;br /&gt;
*Modlesim will let you directly map myReg to in1 or in2 (see below), however ISE will generally fail to compile this code, with an error about the expected size being incorrect&lt;br /&gt;
 test t1(&lt;br /&gt;
      .in1(myReg),&lt;br /&gt;
      .in2(myOtherReg),&lt;br /&gt;
      .out(myOutput)&lt;br /&gt;
      );&lt;br /&gt;
*The easiest way around this is to map myReg to a wire, and use that in the instantiation of your VHDL module&lt;br /&gt;
 wire [63:0] wire_myReg;&lt;br /&gt;
 wire [63:0] wire_myOtherReg;&lt;br /&gt;
 assign wire_myReg = myReg;&lt;br /&gt;
 assign wire_myOtherReg = myOtherReg;&lt;br /&gt;
 &lt;br /&gt;
 test t1(&lt;br /&gt;
      .in1(wire_myReg),&lt;br /&gt;
      .in2(wire_myOtherReg),&lt;br /&gt;
      .out(myOutput)&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Include Option 1 ==&lt;br /&gt;
Use the USER_VHDL_FILES variable in the project makefile:&lt;br /&gt;
 &lt;br /&gt;
 USER_VHDL_FILES += file1.vhd file2.vhd&lt;br /&gt;
 &lt;br /&gt;
The PDK makefile automatically compiles your VHDL files for simulation and includes them in the Xilinx project file for synthesis.  Note that compile order is important with VHDL, so you should list the files in the appropriate order you want them compiled.&lt;br /&gt;
&lt;br /&gt;
== Include Option 1.1 ==&lt;br /&gt;
Use the USER_VHDL_FILES variable in the project&#039;s top level Makefile.include:&lt;br /&gt;
 USER_VHDL_FILES += ../vhdl/file.vhd&lt;br /&gt;
*Still use the ../ because this path will get included in the lower level directories, and the makefile there will still expect a relative path.&lt;br /&gt;
&lt;br /&gt;
== Include Option 2 == &lt;br /&gt;
Create site and/or user directories that include your own makefile.  The PDK automatically searches these directories for a file called &amp;quot;Makefile.cnypdk&amp;quot; and includes that in the default makefile:&lt;br /&gt;
 &lt;br /&gt;
CNY_PDK_USER_DIRECTORY&lt;br /&gt;
CNY_PDK_SITE_DIRECTORY&lt;br /&gt;
 &lt;br /&gt;
This is a good place to set which simulator you use, set up signal tracing, etc.&lt;br /&gt;
 &lt;br /&gt;
== Other information == &lt;br /&gt;
There are also several variables in the makefile that allow you to create dependencies for your own make flow.  For example, the variable USER_SIM_DEPENDENCIES is listed as a dependency for the simulation, so if you want to run your own compile step before running the simulation, you can set that variable and the dependency will cause it to run that step at the right time.  Others are USER_COMPILE_DEPENDENCIES and USER_PHYS_DEPENDENCIES, which is a dependency of the synthesis target.&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Adding_VHDL_Files_to_a_Project&amp;diff=881</id>
		<title>Adding VHDL Files to a Project</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Adding_VHDL_Files_to_a_Project&amp;diff=881"/>
		<updated>2013-02-13T08:46:31Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: /* Instantiation in Verilog */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using Your VHDL Module In The Top Level cae_pers.v File==&lt;br /&gt;
=== Entity Definition ===&lt;br /&gt;
&lt;br /&gt;
 entity test is&lt;br /&gt;
 port(&lt;br /&gt;
      in1 : in std_logic;&lt;br /&gt;
      in2 : in std_logic;&lt;br /&gt;
      out1: out std_logic);&lt;br /&gt;
 end entity;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Instantiation in Verilog ===&lt;br /&gt;
&lt;br /&gt;
*It will look exactly like any other module instantiation in Verilog.&lt;br /&gt;
&amp;lt;code&amp;gt; test t1(&lt;br /&gt;
      .in1(myInput),&lt;br /&gt;
      .in2(myOtherInput),&lt;br /&gt;
      .out(myOutput)&lt;br /&gt;
      );&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Another easier way is to use this [[Media:Vhd2v isnt.txt|Python script]] to generate instantiation code in Verilog. Use the following command:&lt;br /&gt;
&amp;lt;code&amp;gt; source cny_Env&lt;br /&gt;
 $ mv ./vhd2v_inst.txt /.vhd2v_isnt.py&lt;br /&gt;
 $ ./vhd2v_inst.py &amp;lt;filename&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Module With Vectors ===&lt;br /&gt;
*If we change the earlier definition to look like the following&lt;br /&gt;
 entity testWithVector is&lt;br /&gt;
 port(&lt;br /&gt;
      in1 : in std_logic_vector(63 downto 0);&lt;br /&gt;
      in2 : in std_logic_vector(63 downto 0);&lt;br /&gt;
      out1: out std_logic);&lt;br /&gt;
 end entity;&lt;br /&gt;
*Notice that the expected input is a 64 bit wide signal path&lt;br /&gt;
*Assume that you have a Verilog reg as follows&lt;br /&gt;
 reg [63:0] myReg;&lt;br /&gt;
 reg [63:0] myOtherReg;&lt;br /&gt;
*Modlesim will let you directly map myReg to in1 or in2 (see below), however ISE will generally fail to compile this code, with an error about the expected size being incorrect&lt;br /&gt;
 test t1(&lt;br /&gt;
      .in1(myReg),&lt;br /&gt;
      .in2(myOtherReg),&lt;br /&gt;
      .out(myOutput)&lt;br /&gt;
      );&lt;br /&gt;
*The easiest way around this is to map myReg to a wire, and use that in the instantiation of your VHDL module&lt;br /&gt;
 wire [63:0] wire_myReg;&lt;br /&gt;
 wire [63:0] wire_myOtherReg;&lt;br /&gt;
 assign wire_myReg = myReg;&lt;br /&gt;
 assign wire_myOtherReg = myOtherReg;&lt;br /&gt;
 &lt;br /&gt;
 test t1(&lt;br /&gt;
      .in1(wire_myReg),&lt;br /&gt;
      .in2(wire_myOtherReg),&lt;br /&gt;
      .out(myOutput)&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
== Include Option 1 ==&lt;br /&gt;
Use the USER_VHDL_FILES variable in the project makefile:&lt;br /&gt;
 &lt;br /&gt;
 USER_VHDL_FILES += file1.vhd file2.vhd&lt;br /&gt;
 &lt;br /&gt;
The PDK makefile automatically compiles your VHDL files for simulation and includes them in the Xilinx project file for synthesis.  Note that compile order is important with VHDL, so you should list the files in the appropriate order you want them compiled.&lt;br /&gt;
&lt;br /&gt;
== Include Option 1.1 ==&lt;br /&gt;
Use the USER_VHDL_FILES variable in the project&#039;s top level Makefile.include:&lt;br /&gt;
 USER_VHDL_FILES += ../vhdl/file.vhd&lt;br /&gt;
*Still use the ../ because this path will get included in the lower level directories, and the makefile there will still expect a relative path.&lt;br /&gt;
&lt;br /&gt;
== Include Option 2 == &lt;br /&gt;
Create site and/or user directories that include your own makefile.  The PDK automatically searches these directories for a file called &amp;quot;Makefile.cnypdk&amp;quot; and includes that in the default makefile:&lt;br /&gt;
 &lt;br /&gt;
CNY_PDK_USER_DIRECTORY&lt;br /&gt;
CNY_PDK_SITE_DIRECTORY&lt;br /&gt;
 &lt;br /&gt;
This is a good place to set which simulator you use, set up signal tracing, etc.&lt;br /&gt;
 &lt;br /&gt;
== Other information == &lt;br /&gt;
There are also several variables in the makefile that allow you to create dependencies for your own make flow.  For example, the variable USER_SIM_DEPENDENCIES is listed as a dependency for the simulation, so if you want to run your own compile step before running the simulation, you can set that variable and the dependency will cause it to run that step at the right time.  Others are USER_COMPILE_DEPENDENCIES and USER_PHYS_DEPENDENCIES, which is a dependency of the synthesis target.&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Cyc05_week4_presentation.pdf&amp;diff=879</id>
		<title>File:Cyc05 week4 presentation.pdf</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Cyc05_week4_presentation.pdf&amp;diff=879"/>
		<updated>2013-02-12T23:27:30Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: uploaded a new version of &amp;quot;Image:Cyc05 week4 presentation.pdf&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Cyc05&amp;diff=878</id>
		<title>Team Cyc05</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Cyc05&amp;diff=878"/>
		<updated>2013-02-12T23:19:48Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: /* Weekly Presentations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
|+&#039;&#039;&#039;Team Cyc05&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;200px&amp;quot; | [[Image:Cy.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#CD1014;&amp;quot; | Cyc05 Team Logo&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; &lt;br /&gt;
|+&#039;&#039;Team Members&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Osama G. Attia (ogamal)&lt;br /&gt;
|-&lt;br /&gt;
| Tyler Johnson (tyler07)&lt;br /&gt;
|-&lt;br /&gt;
| PengQing Xie (carterp)&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
* Osama G. Attia&lt;br /&gt;
* Tyler Johnson&lt;br /&gt;
* PengQing Xie&lt;br /&gt;
&lt;br /&gt;
== Weekly Presentations ==&lt;br /&gt;
*Week 1 - [[Media:Cyc05_-_Presentation_01.pdf | Presentation Slides Week 1]]&lt;br /&gt;
*Week 2 - [[Media:Cyc05_Week_2.pdf | Presentation Slides Week 2]]&lt;br /&gt;
*Week 3 - [[Media:Cyc05_week3_presentation.pdf‎ | Presentation Slides Week 3]]&lt;br /&gt;
*Week 4 - [[Media:Cyc05_week4_presentation.pdf‎ | Presentation Slides Week 4]]&lt;br /&gt;
&lt;br /&gt;
== Wiki Contributions ==&lt;br /&gt;
=== Tyler ===&lt;br /&gt;
*Week 1&lt;br /&gt;
**[[Useful Modelsim Commands]]&lt;br /&gt;
**[[Media:Modelsim_pe_user_10.0d.pdf | Modelsim Users Guide]]&lt;br /&gt;
*Week2&lt;br /&gt;
** [[Media:Connect_Remotely_Via_VPN.pdf | Guide to Remote Connecting]]&lt;br /&gt;
*Week3&lt;br /&gt;
**[[Adding VHDL Files to a Project]] Additions and alterations&lt;br /&gt;
**Hosted the scripts for Kevinss tutorial and provided a link for it&lt;br /&gt;
**Modified the landing page to Kevni&#039;t tutorial to have the pdf, and a link to the scripts&lt;br /&gt;
**Modified [[Tutorial: Creating a Custom Bitfile]], some details were unclear and/or left out about using your newly built bitfile&lt;br /&gt;
*Week 4&lt;br /&gt;
**Added a topic to the FAQ page regarding how you can use the /tmp/ directory in order to speed up certain activities such as building a bitfile or simulation. Added [[Media:UseTmpScript.sh‎ | this script]] to help with migration.&lt;br /&gt;
&lt;br /&gt;
=== Osama ===&lt;br /&gt;
*Week 1: Creating Team Cyc05 page.&lt;br /&gt;
*Week 2:&lt;br /&gt;
**Updating [[Connecting to convey-1.ece.iastate.edu]] with usage policy&lt;br /&gt;
**Adding [[Frequently Asked Questions]] page&lt;br /&gt;
* Week 3:&lt;br /&gt;
**Updating the [[Frequently Asked Questions]] page&lt;br /&gt;
**Adding and maintaining the [[Using the Memory Controller Interface]] page&lt;br /&gt;
* Week 4:&lt;br /&gt;
**[[Media:Vhd2v isnt.txt|Python script to generate instantiation code of VHDL module in Verilog]]&lt;br /&gt;
**[[Media:Convey_mc_ports.txt|Python script to generate the MC interface signals in VHDL]]&lt;br /&gt;
**[[Media:convey_mc_ports_vhdl.txt|MC interface signals]] in VHDL&lt;br /&gt;
**Adding more stuff to the [[Frequently Asked Questions]] page&lt;br /&gt;
&lt;br /&gt;
=== PengQing ===&lt;br /&gt;
*Week 1:&lt;br /&gt;
**[http://sn0v.wordpress.com/2012/12/07/installing-cuda-5-on-ubuntu-12-04/ Installing CUDA on Ubuntu]&lt;br /&gt;
**[http://graphics.stanford.edu/~mhouston/public_talks/R520-mhouston.pdf General Purpose Computation on GPUs (GPGPU)]&lt;br /&gt;
*Week 2:&lt;br /&gt;
**[http://vol.verilog.com/VOL/main.htm Verilog self-study online course]&lt;br /&gt;
*Week 3:&lt;br /&gt;
**[http://www.ece.msstate.edu/~reese/EE4743/lectures/verilog_intro_2002/verilog_intro_2002.pdf Verilog vs. VHDL]&lt;br /&gt;
*Week 4:&lt;br /&gt;
**[http://www.vogella.com/articles/Git/article.html git tutorial]&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Cyc05_week4_presentation.pdf&amp;diff=877</id>
		<title>File:Cyc05 week4 presentation.pdf</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Cyc05_week4_presentation.pdf&amp;diff=877"/>
		<updated>2013-02-12T23:19:18Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Cyc05_week3_presentation.pdf&amp;diff=876</id>
		<title>File:Cyc05 week3 presentation.pdf</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Cyc05_week3_presentation.pdf&amp;diff=876"/>
		<updated>2013-02-12T23:18:56Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: uploaded a new version of &amp;quot;Image:Cyc05 week3 presentation.pdf&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;our week three presentation&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Cyc05_week3_presentation.pdf&amp;diff=875</id>
		<title>File:Cyc05 week3 presentation.pdf</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Cyc05_week3_presentation.pdf&amp;diff=875"/>
		<updated>2013-02-12T23:18:12Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: uploaded a new version of &amp;quot;Image:Cyc05 week3 presentation.pdf&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;our week three presentation&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Using_ISE%27s_Core_Generator_to_build_FIFOs_and_other_IP_cores&amp;diff=861</id>
		<title>Using ISE&#039;s Core Generator to build FIFOs and other IP cores</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Using_ISE%27s_Core_Generator_to_build_FIFOs_and_other_IP_cores&amp;diff=861"/>
		<updated>2013-02-12T05:01:32Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: /* How-to */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Why Use Dedicated Logic ==&lt;br /&gt;
If you don&#039;t use it, you lose it!  Don&#039;t let the dedicated logic (BRAMs, DSP slices) go unused... you&#039;ll hurt their feelings.&lt;br /&gt;
&lt;br /&gt;
Dedicated logic improves compile times and reduces the amount of Slice Logic used.  It&#039;s also FAST, and can help reduce the chance of timing errors.  For example, the DSP slices can operate at 550 MHz.&lt;br /&gt;
&lt;br /&gt;
== How-to ==&lt;br /&gt;
# Open Xilinx&#039;s ISE from the terminal (make sure your [[Convey environment setup | environmental variables]] are set):&lt;br /&gt;
 ise &amp;amp;&lt;br /&gt;
# Create or open a project.  The devices on the HC-1 and HC-2 are Virtex 5 FPGAs (xc5vlx330, -2, ff1760).&lt;br /&gt;
# Open the Core Generator (Tools -&amp;gt; Core Generator...)&lt;br /&gt;
# Create a new Core Generator project.&lt;br /&gt;
## Part&lt;br /&gt;
### Family: Virtex5&lt;br /&gt;
### Device: xc5vlx330&lt;br /&gt;
### Package: ff1760&lt;br /&gt;
### Speed: -2&lt;br /&gt;
## Generation&lt;br /&gt;
### Simulation Model: Structural&lt;br /&gt;
# Generate you IP Cores!&lt;br /&gt;
# Create folder named &amp;quot;coregen&amp;quot; in your PDK proejct&lt;br /&gt;
# Copy the .ngc, .v, and .xco to the coregen folder in your PDK project&lt;br /&gt;
&lt;br /&gt;
== Common IP Cores ==&lt;br /&gt;
Most IP cores can be implemented using either BRAM (Block RAM), DSP cores, or Slice logic.  To give you an idea about the number of components available, there are:&lt;br /&gt;
* 288 36-Kilobit BRAMs available&lt;br /&gt;
** BRAMs are dual port, allowing multiple small FIFOs per BRAM&lt;br /&gt;
* 28x15 DSP slices&lt;br /&gt;
* 51,840 Slices (each slice contains 4 LUTS &amp;amp; 4 Flip-flops)&lt;br /&gt;
&lt;br /&gt;
Here are some common components you could use:&lt;br /&gt;
* Memories &amp;amp; Storage Elements -&amp;gt; (use Block RAM)&lt;br /&gt;
** FIFOs (any port width)&lt;br /&gt;
** Dual port RAM (port widths: 2, 4, 8... up to 128 bits)&lt;br /&gt;
* Math Functions -&amp;gt; (use DSP slices)&lt;br /&gt;
** Adder/Subtracts (up to 48 bit)&lt;br /&gt;
** Multipliers (up to 64 bit, 128 bit output)&lt;br /&gt;
** Dividers (up to 32 bit)&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Cyc05&amp;diff=860</id>
		<title>Team Cyc05</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Cyc05&amp;diff=860"/>
		<updated>2013-02-12T00:16:00Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: /* Osama */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
|+&#039;&#039;&#039;Team Cyc05&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;200px&amp;quot; | [[Image:Cy.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#CD1014;&amp;quot; | Cyc05 Team Logo&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; &lt;br /&gt;
|+&#039;&#039;Team Members&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Osama G. Attia (ogamal)&lt;br /&gt;
|-&lt;br /&gt;
| Tyler Johnson (tyler07)&lt;br /&gt;
|-&lt;br /&gt;
| PengQing Xie (carterp)&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
* Osama G. Attia&lt;br /&gt;
* Tyler Johnson&lt;br /&gt;
* PengQing Xie&lt;br /&gt;
&lt;br /&gt;
== Weekly Presentations ==&lt;br /&gt;
*Week 1 - [[Media:Cyc05_-_Presentation_01.pdf | Presentation Slides Week 1]]&lt;br /&gt;
*Week 2 - [[Media:Cyc05_Week_2.pdf | Presentation Slides Week 2]]&lt;br /&gt;
*Week 3 - [[Media:Cyc05_week3_presentation.pdf‎ | Presentation Slides Week 3]]&lt;br /&gt;
&lt;br /&gt;
== Wiki Contributions ==&lt;br /&gt;
=== Tyler ===&lt;br /&gt;
*Week 1&lt;br /&gt;
**[[Useful Modelsim Commands]]&lt;br /&gt;
**[[Media:Modelsim_pe_user_10.0d.pdf | Modelsim Users Guide]]&lt;br /&gt;
*Week2&lt;br /&gt;
** [[Media:Connect_Remotely_Via_VPN.pdf | Guide to Remote Connecting]]&lt;br /&gt;
*Week3&lt;br /&gt;
**[[Adding VHDL Files to a Project]] Additions and alterations&lt;br /&gt;
**Hosted the scripts for Kevinss tutorial and provided a link for it&lt;br /&gt;
**Modified the landing page to Kevni&#039;t tutorial to have the pdf, and a link to the scripts&lt;br /&gt;
**Modified [[Tutorial: Creating a Custom Bitfile]], some details were unclear and/or left out about using your newly built bitfile&lt;br /&gt;
&lt;br /&gt;
=== Osama ===&lt;br /&gt;
*Week 1: Creating Team Cyc05 page.&lt;br /&gt;
*Week 2:&lt;br /&gt;
**Updating [[Connecting to convey-1.ece.iastate.edu]] with usage policy&lt;br /&gt;
**Adding [[Frequently Asked Questions]] page&lt;br /&gt;
* Week 3:&lt;br /&gt;
**Updating the [[Frequently Asked Questions]] page&lt;br /&gt;
**Adding and maintaining the [[Using the Memory Controller Interface]] page&lt;br /&gt;
* Week 4:&lt;br /&gt;
**[[Media:Vhd2v isnt.txt|Python script to generate instantiation code of VHDL module in Verilog]]&lt;br /&gt;
**[[Media:Convey_mc_ports.txt|Python script to generate the MC interface signals in VHDL]]&lt;br /&gt;
**[[Media:convey_mc_ports_vhdl.txt|MC interface signals]] in VHDL&lt;br /&gt;
**Adding more stuff to the [[Frequently Asked Questions]] page&lt;br /&gt;
&lt;br /&gt;
=== PengQing ===&lt;br /&gt;
*Week 1:&lt;br /&gt;
**[http://sn0v.wordpress.com/2012/12/07/installing-cuda-5-on-ubuntu-12-04/ Installing CUDA on Ubuntu]&lt;br /&gt;
**[http://graphics.stanford.edu/~mhouston/public_talks/R520-mhouston.pdf General Purpose Computation on GPUs (GPGPU)]&lt;br /&gt;
*Week 2:&lt;br /&gt;
**[http://vol.verilog.com/VOL/main.htm Verilog self-study online course]&lt;br /&gt;
*Week 3:&lt;br /&gt;
**[http://www.ece.msstate.edu/~reese/EE4743/lectures/verilog_intro_2002/verilog_intro_2002.pdf Verilog vs. VHDL]&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Cyc05&amp;diff=859</id>
		<title>Team Cyc05</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Cyc05&amp;diff=859"/>
		<updated>2013-02-12T00:15:10Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: /* Osama */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
|+&#039;&#039;&#039;Team Cyc05&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;200px&amp;quot; | [[Image:Cy.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#CD1014;&amp;quot; | Cyc05 Team Logo&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; &lt;br /&gt;
|+&#039;&#039;Team Members&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Osama G. Attia (ogamal)&lt;br /&gt;
|-&lt;br /&gt;
| Tyler Johnson (tyler07)&lt;br /&gt;
|-&lt;br /&gt;
| PengQing Xie (carterp)&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
* Osama G. Attia&lt;br /&gt;
* Tyler Johnson&lt;br /&gt;
* PengQing Xie&lt;br /&gt;
&lt;br /&gt;
== Weekly Presentations ==&lt;br /&gt;
*Week 1 - [[Media:Cyc05_-_Presentation_01.pdf | Presentation Slides Week 1]]&lt;br /&gt;
*Week 2 - [[Media:Cyc05_Week_2.pdf | Presentation Slides Week 2]]&lt;br /&gt;
*Week 3 - [[Media:Cyc05_week3_presentation.pdf‎ | Presentation Slides Week 3]]&lt;br /&gt;
&lt;br /&gt;
== Wiki Contributions ==&lt;br /&gt;
=== Tyler ===&lt;br /&gt;
*Week 1&lt;br /&gt;
**[[Useful Modelsim Commands]]&lt;br /&gt;
**[[Media:Modelsim_pe_user_10.0d.pdf | Modelsim Users Guide]]&lt;br /&gt;
*Week2&lt;br /&gt;
** [[Media:Connect_Remotely_Via_VPN.pdf | Guide to Remote Connecting]]&lt;br /&gt;
*Week3&lt;br /&gt;
**[[Adding VHDL Files to a Project]] Additions and alterations&lt;br /&gt;
**Hosted the scripts for Kevinss tutorial and provided a link for it&lt;br /&gt;
**Modified the landing page to Kevni&#039;t tutorial to have the pdf, and a link to the scripts&lt;br /&gt;
**Modified [[Tutorial: Creating a Custom Bitfile]], some details were unclear and/or left out about using your newly built bitfile&lt;br /&gt;
&lt;br /&gt;
=== Osama ===&lt;br /&gt;
*Week 1: Creating Team Cyc05 page.&lt;br /&gt;
*Week 2:&lt;br /&gt;
**Updating [[Connecting to convey-1.ece.iastate.edu]] with usage policy&lt;br /&gt;
**Adding [[Frequently Asked Questions]] page&lt;br /&gt;
* Week 3:&lt;br /&gt;
**Updating the [[Frequently Asked Questions]] page&lt;br /&gt;
**Adding and maintaining the [[Using the Memory Controller Interface]] page&lt;br /&gt;
* Week 4:&lt;br /&gt;
**[[Media:Vhd2v isnt.txt|Script]] to generate instantiation code of VHDL module in Verilog&lt;br /&gt;
**[[Media:Convey_mc_ports.txt|Python script]] to generate the MC interface signals in VHDL&lt;br /&gt;
**[[Media:convey_mc_ports_vhdl.txt|MC interface signals]] in VHDL&lt;br /&gt;
**Adding more stuff to the [[Frequently Asked Questions]] page&lt;br /&gt;
&lt;br /&gt;
=== PengQing ===&lt;br /&gt;
*Week 1:&lt;br /&gt;
**[http://sn0v.wordpress.com/2012/12/07/installing-cuda-5-on-ubuntu-12-04/ Installing CUDA on Ubuntu]&lt;br /&gt;
**[http://graphics.stanford.edu/~mhouston/public_talks/R520-mhouston.pdf General Purpose Computation on GPUs (GPGPU)]&lt;br /&gt;
*Week 2:&lt;br /&gt;
**[http://vol.verilog.com/VOL/main.htm Verilog self-study online course]&lt;br /&gt;
*Week 3:&lt;br /&gt;
**[http://www.ece.msstate.edu/~reese/EE4743/lectures/verilog_intro_2002/verilog_intro_2002.pdf Verilog vs. VHDL]&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Vhd2v_isnt.txt&amp;diff=858</id>
		<title>File:Vhd2v isnt.txt</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Vhd2v_isnt.txt&amp;diff=858"/>
		<updated>2013-02-12T00:14:06Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: Simple script to read a VHDL module and generate code to instantiate it in Verilog
NOTE: change script name to &amp;quot;vhd2v_inst.py&amp;quot; first then run as: &amp;quot;python vhd2v_inst.py &amp;lt;filename.vhd&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple script to read a VHDL module and generate code to instantiate it in Verilog&lt;br /&gt;
NOTE: change script name to &amp;quot;vhd2v_inst.py&amp;quot; first then run as: &amp;quot;python vhd2v_inst.py &amp;lt;filename.vhd&amp;gt;&amp;quot;&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Main_Page&amp;diff=857</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Main_Page&amp;diff=857"/>
		<updated>2013-02-12T00:12:22Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Articles ==&lt;br /&gt;
=== Convey HC-1 Tutorials ===&lt;br /&gt;
* [[Connecting to convey-1.ece.iastate.edu]]&lt;br /&gt;
* [[Convey environment setup|Setting Up Environment Variables on Convey&#039;s HC-1]]&lt;br /&gt;
* [[Convey PDK Tutorial]]&lt;br /&gt;
* [[Using the Memory Controller Interface]]&lt;br /&gt;
* [[Running the Vector Adder Example Application]]&lt;br /&gt;
&amp;lt;!-- * Convey pdk tutorial: [[image:ConveyTutorial1.pdf]] (uses newCnyProject script) --&amp;gt;&lt;br /&gt;
* [[Analyze the Simpleton Basic App]]&lt;br /&gt;
* [[Tutorial: Creating a Custom Bitfile | Create a Custom Bitfile]]&lt;br /&gt;
* [[Using a Custom Bitfile in C Code]]&lt;br /&gt;
* [[Adding VHDL Files to a Project]]&lt;br /&gt;
* [[The Verilog Hardware Interface for CAE]]&lt;br /&gt;
* [[Using ISE&#039;s Core Generator to build FIFOs and other IP cores]]&lt;br /&gt;
* [[Running Different Bitfiles on each AE | Projects with Multiple Bitfiles]]&lt;br /&gt;
* [[Using the Write-Complete Interface]]&lt;br /&gt;
* [[Using the Timing Analyzer]]&lt;br /&gt;
&lt;br /&gt;
* [[Using SPAT]]&lt;br /&gt;
* [[Using GPROF]]&lt;br /&gt;
* [[Convey vector example | Example of Loop Unrolling using FPGA]]&lt;br /&gt;
* [[Sobel Algorithm | Speeding up Sobel Algorithm]]&lt;br /&gt;
* &#039;&#039;&#039;[[Frequently Asked Questions]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Reference Manuals ==&lt;br /&gt;
=== Convey ===&lt;br /&gt;
* [[Media:ConveyPDKReferenceManual.pdf | Convey PDK Reference Manual (.pdf)]] (updated to V5.2; April 2012)&lt;br /&gt;
* [[Media:ConveyProgrammersGuide.pdf | Convey Programmers Guide (.pdf)]] (updated to V1.8; November 2010)&lt;br /&gt;
* [[Media:ConveyReferenceManual.pdf | Convey Reference Manual (.pdf)]]&lt;br /&gt;
* [[Media:ConveySpatUsersGuide.pdf | Convey SPAT (Simulator Performance Analysis Tool) Guide]]&lt;br /&gt;
* [[Media:Convey PDK Training.pdf | Convey PDK (.pdf)]]&lt;br /&gt;
* [[Media:Convey Overview.pdf | Convey Overview (.pdf)]]&lt;br /&gt;
&lt;br /&gt;
The newet version of these documents are available at [http://www.conveysupport.com/help/?page_id=112 Convey&#039;s Support Site]&lt;br /&gt;
&lt;br /&gt;
=== CUDA ===&lt;br /&gt;
* [[Media:CUDA_C_Programming_Guide.pdf | CUDA_C_Programming_Guide (.pdf)]]&lt;br /&gt;
* [[Media:CUDA_C_Best_Practices_Guide.pdf | CUDA_C_Best_Practices_Guide(.pdf)]]&lt;br /&gt;
* [[Media:CUDA_Memory.pdf | CUDA_Memory (.pdf)]]&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://www.asic-world.com www.asic-world.com] - Great Tutorials for those Learning HDLs&lt;br /&gt;
* [http://memocode.irisa.fr MemoCODE 2012]&lt;br /&gt;
** [[Media:2012-memocode-contest.pdf | MemoCODE Contest.pdf]]&lt;br /&gt;
** [http://memocode.irisa.fr/2012/2012-memocode-contest.tar.gz Reference Implementation]&lt;br /&gt;
** [ftp://ftp-trace.ncbi.nih.gov/1000genomes/ftp/technical/reference/human_g1k_v37.fasta.gz Human Reference Genome (human_g1k_v37.fasta.gz)]&lt;br /&gt;
** [ftp://ftp-trace.ncbi.nih.gov/1000genomes/ftp/data/NA06985/sequence_read/ERR050082.filt.fastq.gz Example Reads (ERR050082.filt.fastq.gz)]&lt;br /&gt;
** [http://ftp.1000genomes.ebi.ac.uk/vol1/ftp/data/NA06985/sequence_read/ERR050082.filt.fastq.gz Example Reads (Alternative Link) (ERR050082.filt.fastq.gz)]&lt;br /&gt;
&lt;br /&gt;
* [[2010 Main Page | CprE 584 2010 Wiki Main Page]]&lt;br /&gt;
* [http://class.ee.iastate.edu/cpre583/ CprE 583 Website]&lt;br /&gt;
* [http://class.ece.iastate.edu/cpre584/ CprE 584 Website]&lt;br /&gt;
&lt;br /&gt;
=== Other Articles ===&lt;br /&gt;
* [[Assignment|Assignments]]&lt;br /&gt;
* [[A quick start on CUDA]]&lt;br /&gt;
&lt;br /&gt;
== Helpful Guides ==&lt;br /&gt;
* [http://www.c7t-hdl.com/Docs/C7T_AN05_Customized_WaveView_ModelSim_ISE.pdf Modelsim and ISE]&lt;br /&gt;
* [http://www.fpga.com.cn/hdl/training/verilog%20reference%20guide.pdf The Verilog Golden Reference]&lt;br /&gt;
* [http://courseware.ee.calpoly.edu/~bmealy/shock_awe_vhdl_adobe.pdf &amp;quot;The Shock and Awe&amp;quot; VHDL Tutorial]&lt;br /&gt;
* [http://www.ece.msstate.edu/~reese/EE4743/lectures/verilog_intro_2002/verilog_intro_2002.pdf Verilog vs. VHDL]&lt;br /&gt;
* [http://esd.cs.ucr.edu/labs/tutorial/ VHDL Simple Code Examples]&lt;br /&gt;
* [http://www.seas.upenn.edu/~ese171/vhdl/vhdl_primer.html VHDL Primer]&lt;br /&gt;
* [http://www.kxcad.net/electronic_Xilinx_guide/mergedProjects/xsim/html/xs_p_ml_instantiation.htm Using VHDL components in Verilog]&lt;br /&gt;
* [[Media:Modelsim_pe_user_10.0d.pdf | Modelsim Users Guide]]&lt;br /&gt;
* [[Useful Modelsim Commands]]&lt;br /&gt;
* [http://sn0v.wordpress.com/2012/12/07/installing-cuda-5-on-ubuntu-12-04/ Installing CUDA on Ubuntu]&lt;br /&gt;
* [http://graphics.stanford.edu/~mhouston/public_talks/R520-mhouston.pdf General Purpose Computation on GPUs (GPGPU)]&lt;br /&gt;
*  Convey vector personalities offer OpenMP-like programming approach with FPGA accelerating. [http://www.fpl2012.org/Presentations/W4B2.pdf]&lt;br /&gt;
* [[Media:Connect_Remotely_Via_VPN.pdf | Guide to Remote Connecting]]&lt;br /&gt;
&lt;br /&gt;
== Readings for Memocode 2012 ==&lt;br /&gt;
*[[Media:Brief_Bioinform-2010-Li-473-83.pdf|A survey on algorithms for sequencing]]&lt;br /&gt;
*[[Media:Gb-2009-10-3-r25.pdf|Burrows-Wheeler indexing]]&lt;br /&gt;
&lt;br /&gt;
== Spring 2013 Teams ==&lt;br /&gt;
* [[Team Cyc05]]&lt;br /&gt;
* [[Team Challenger]]&lt;br /&gt;
* [[Team Blitz]]&lt;br /&gt;
&lt;br /&gt;
== Spring 2012 Teams ==&lt;br /&gt;
* [[Team Gryffindor]]&lt;br /&gt;
* [[Team Slytherin]]&lt;br /&gt;
* [[Team 142857]]&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Cyc05&amp;diff=852</id>
		<title>Team Cyc05</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Cyc05&amp;diff=852"/>
		<updated>2013-02-11T22:05:53Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: /* Osama */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
|+&#039;&#039;&#039;Team Cyc05&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;200px&amp;quot; | [[Image:Cy.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#CD1014;&amp;quot; | Cyc05 Team Logo&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; &lt;br /&gt;
|+&#039;&#039;Team Members&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Osama G. Attia (ogamal)&lt;br /&gt;
|-&lt;br /&gt;
| Tyler Johnson (tyler07)&lt;br /&gt;
|-&lt;br /&gt;
| PengQing Xie (carterp)&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
* Osama G. Attia&lt;br /&gt;
* Tyler Johnson&lt;br /&gt;
* PengQing Xie&lt;br /&gt;
&lt;br /&gt;
== Weekly Presentations ==&lt;br /&gt;
*Week 1 - [[Media:Cyc05_-_Presentation_01.pdf | Presentation Slides Week 1]]&lt;br /&gt;
*Week 2 - [[Media:Cyc05_Week_2.pdf | Presentation Slides Week 2]]&lt;br /&gt;
*Week 3 - [[Media:Cyc05_week3_presentation.pdf‎ | Presentation Slides Week 3]]&lt;br /&gt;
&lt;br /&gt;
== Wiki Contributions ==&lt;br /&gt;
=== Tyler ===&lt;br /&gt;
*Week 1&lt;br /&gt;
**[[Useful Modelsim Commands]]&lt;br /&gt;
**[[Media:Modelsim_pe_user_10.0d.pdf | Modelsim Users Guide]]&lt;br /&gt;
*Week2&lt;br /&gt;
** [[Media:Connect_Remotely_Via_VPN.pdf | Guide to Remote Connecting]]&lt;br /&gt;
*Week3&lt;br /&gt;
**[[Adding VHDL Files to a Project]] Additions and alterations&lt;br /&gt;
**Hosted the scripts for Kevinss tutorial and provided a link for it&lt;br /&gt;
**Modified the landing page to Kevni&#039;t tutorial to have the pdf, and a link to the scripts&lt;br /&gt;
**Modified [[Tutorial: Creating a Custom Bitfile]], some details were unclear and/or left out about using your newly built bitfile&lt;br /&gt;
&lt;br /&gt;
=== Osama ===&lt;br /&gt;
*Week 1: Creating Team Cyc05 page.&lt;br /&gt;
*Week 2:&lt;br /&gt;
**Updating [[Connecting to convey-1.ece.iastate.edu]] with usage policy&lt;br /&gt;
**Adding [[Frequently Asked Questions]] page&lt;br /&gt;
* Week 3:&lt;br /&gt;
**Updating the [[Frequently Asked Questions]] page&lt;br /&gt;
**Adding and maintaining the [[Using the Memory Controller Interface]] page&lt;br /&gt;
* Week 4:&lt;br /&gt;
**Adding more stuff to the [[Frequently Asked Questions]] page&lt;br /&gt;
**[[Media:Convey_mc_ports.txt|Python script]] to generate the MC interface signals in VHDL&lt;br /&gt;
**[[Media:convey_mc_ports_vhdl.txt|MC interface signals]] in VHDL&lt;br /&gt;
&lt;br /&gt;
=== PengQing ===&lt;br /&gt;
*Week 1:&lt;br /&gt;
**[http://sn0v.wordpress.com/2012/12/07/installing-cuda-5-on-ubuntu-12-04/ Installing CUDA on Ubuntu]&lt;br /&gt;
**[http://graphics.stanford.edu/~mhouston/public_talks/R520-mhouston.pdf General Purpose Computation on GPUs (GPGPU)]&lt;br /&gt;
*Week 2:&lt;br /&gt;
**[http://vol.verilog.com/VOL/main.htm Verilog self-study online course]&lt;br /&gt;
*Week 3:&lt;br /&gt;
**[http://www.ece.msstate.edu/~reese/EE4743/lectures/verilog_intro_2002/verilog_intro_2002.pdf Verilog vs. VHDL]&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Convey_mc_ports.txt&amp;diff=851</id>
		<title>File:Convey mc ports.txt</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Convey_mc_ports.txt&amp;diff=851"/>
		<updated>2013-02-11T22:05:41Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: uploaded a new version of &amp;quot;Image:Convey mc ports.txt&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rename the file back to &amp;quot;convey_mc_ports.py&amp;quot; and run it using the command &amp;quot;python convey_mc_ports.py&amp;quot;.&lt;br /&gt;
NOTE: doesn&#039;t run on python version before 2.6&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Convey_mc_ports.txt&amp;diff=850</id>
		<title>File:Convey mc ports.txt</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Convey_mc_ports.txt&amp;diff=850"/>
		<updated>2013-02-11T22:03:41Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: uploaded a new version of &amp;quot;Image:Convey mc ports.txt&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rename the file back to &amp;quot;convey_mc_ports.py&amp;quot; and run it using the command &amp;quot;python convey_mc_ports.py&amp;quot;.&lt;br /&gt;
NOTE: doesn&#039;t run on python version before 2.6&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Convey_mc_ports.txt&amp;diff=849</id>
		<title>File:Convey mc ports.txt</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Convey_mc_ports.txt&amp;diff=849"/>
		<updated>2013-02-11T21:58:35Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: Rename the file back to &amp;quot;convey_mc_ports.py&amp;quot; and run it using the command &amp;quot;python convey_mc_ports.py&amp;quot;.
NOTE: doesn&amp;#039;t run on python version before 2.6&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rename the file back to &amp;quot;convey_mc_ports.py&amp;quot; and run it using the command &amp;quot;python convey_mc_ports.py&amp;quot;.&lt;br /&gt;
NOTE: doesn&#039;t run on python version before 2.6&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Convey_mc_ports_vhdl.txt&amp;diff=848</id>
		<title>File:Convey mc ports vhdl.txt</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Convey_mc_ports_vhdl.txt&amp;diff=848"/>
		<updated>2013-02-11T21:50:50Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: Convey memory controller interface ports in vhdl&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Convey memory controller interface ports in vhdl&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Main_Page&amp;diff=847</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Main_Page&amp;diff=847"/>
		<updated>2013-02-08T01:14:51Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Articles ==&lt;br /&gt;
=== Convey HC-1 Tutorials ===&lt;br /&gt;
* [[Connecting to convey-1.ece.iastate.edu]]&lt;br /&gt;
* [[Convey environment setup|Setting Up Environment Variables on Convey&#039;s HC-1]]&lt;br /&gt;
* [[Convey PDK Tutorial]]&lt;br /&gt;
* [[Using the Memory Controller Interface]]&lt;br /&gt;
* [[Running the Vector Adder Example Application]]&lt;br /&gt;
&amp;lt;!-- * Convey pdk tutorial: [[image:ConveyTutorial1.pdf]] (uses newCnyProject script) --&amp;gt;&lt;br /&gt;
* [[Analyze the Simpleton Basic App]]&lt;br /&gt;
* [[Tutorial: Creating a Custom Bitfile | Create a Custom Bitfile]]&lt;br /&gt;
* [[Using a Custom Bitfile in C Code]]&lt;br /&gt;
* [[Adding VHDL Files to a Project]]&lt;br /&gt;
* [[The Verilog Hardware Interface for CAE]]&lt;br /&gt;
* [[Using ISE&#039;s Core Generator to build FIFOs and other IP cores]]&lt;br /&gt;
* [[Running Different Bitfiles on each AE | Projects with Multiple Bitfiles]]&lt;br /&gt;
* [[Using the Write-Complete Interface]]&lt;br /&gt;
* [[Using the Timing Analyzer]]&lt;br /&gt;
&lt;br /&gt;
* [[Using SPAT]]&lt;br /&gt;
* [[Using GPROF]]&lt;br /&gt;
* [[Convey vector example | Example of Loop Unrolling using FPGA]]&lt;br /&gt;
* [[Sobel Algorithm | Speeding up Sobel Algorithm]]&lt;br /&gt;
* &#039;&#039;&#039;[[Frequently Asked Questions]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Reference Manuals ==&lt;br /&gt;
=== Convey ===&lt;br /&gt;
* [[Media:ConveyPDKReferenceManual.pdf | Convey PDK Reference Manual (.pdf)]] (updated to V5.2; April 2012)&lt;br /&gt;
* [[Media:ConveyProgrammersGuide.pdf | Convey Programmers Guide (.pdf)]] (updated to V1.8; November 2010)&lt;br /&gt;
* [[Media:ConveyReferenceManual.pdf | Convey Reference Manual (.pdf)]]&lt;br /&gt;
* [[Media:ConveySpatUsersGuide.pdf | Convey SPAT (Simulator Performance Analysis Tool) Guide]]&lt;br /&gt;
* [[Media:Convey PDK Training.pdf | Convey PDK (.pdf)]]&lt;br /&gt;
* [[Media:Convey Overview.pdf | Convey Overview (.pdf)]]&lt;br /&gt;
&lt;br /&gt;
The newet version of these documents are available at [http://www.conveysupport.com/help/?page_id=112 Convey&#039;s Support Site]&lt;br /&gt;
&lt;br /&gt;
=== CUDA ===&lt;br /&gt;
* [[Media:CUDA_C_Programming_Guide.pdf | CUDA_C_Programming_Guide (.pdf)]]&lt;br /&gt;
* [[Media:CUDA_C_Best_Practices_Guide.pdf | CUDA_C_Best_Practices_Guide(.pdf)]]&lt;br /&gt;
* [[Media:CUDA_Memory.pdf | CUDA_Memory (.pdf)]]&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://www.asic-world.com www.asic-world.com] - Great Tutorials for those Learning HDLs&lt;br /&gt;
* [http://memocode.irisa.fr MemoCODE 2012]&lt;br /&gt;
** [[Media:2012-memocode-contest.pdf | MemoCODE Contest.pdf]]&lt;br /&gt;
** [http://memocode.irisa.fr/2012/2012-memocode-contest.tar.gz Reference Implementation]&lt;br /&gt;
** [ftp://ftp-trace.ncbi.nih.gov/1000genomes/ftp/technical/reference/human_g1k_v37.fasta.gz Human Reference Genome (human_g1k_v37.fasta.gz)]&lt;br /&gt;
** [ftp://ftp-trace.ncbi.nih.gov/1000genomes/ftp/data/NA06985/sequence_read/ERR050082.filt.fastq.gz Example Reads (ERR050082.filt.fastq.gz)]&lt;br /&gt;
** [http://ftp.1000genomes.ebi.ac.uk/vol1/ftp/data/NA06985/sequence_read/ERR050082.filt.fastq.gz Example Reads (Alternative Link) (ERR050082.filt.fastq.gz)]&lt;br /&gt;
&lt;br /&gt;
* [[2010 Main Page | CprE 584 2010 Wiki Main Page]]&lt;br /&gt;
* [http://class.ee.iastate.edu/cpre583/ CprE 583 Website]&lt;br /&gt;
* [http://class.ece.iastate.edu/cpre584/ CprE 584 Website]&lt;br /&gt;
&lt;br /&gt;
=== Other Articles ===&lt;br /&gt;
* [[Assignment|Assignments]]&lt;br /&gt;
* [[A quick start on CUDA]]&lt;br /&gt;
&lt;br /&gt;
== Helpful Guides ==&lt;br /&gt;
* [http://www.c7t-hdl.com/Docs/C7T_AN05_Customized_WaveView_ModelSim_ISE.pdf Modelsim and ISE]&lt;br /&gt;
* [http://www.fpga.com.cn/hdl/training/verilog%20reference%20guide.pdf The Verilog Golden Reference]&lt;br /&gt;
* [http://courseware.ee.calpoly.edu/~bmealy/shock_awe_vhdl_adobe.pdf &amp;quot;The Shock and Awe&amp;quot; VHDL Tutorial]&lt;br /&gt;
* [http://www.ece.msstate.edu/~reese/EE4743/lectures/verilog_intro_2002/verilog_intro_2002.pdf Verilog vs. VHDL]&lt;br /&gt;
* [http://esd.cs.ucr.edu/labs/tutorial/ VHDL Simple Code Examples]&lt;br /&gt;
* [http://www.seas.upenn.edu/~ese171/vhdl/vhdl_primer.html VHDL Primer]&lt;br /&gt;
* [http://www.kxcad.net/electronic_Xilinx_guide/mergedProjects/xsim/html/xs_p_ml_instantiation.htm Using VHDL components in Verilog]&lt;br /&gt;
* [[Media:Modelsim_pe_user_10.0d.pdf | Modelsim Users Guide]]&lt;br /&gt;
* [[Useful Modelsim Commands]]&lt;br /&gt;
* [http://sn0v.wordpress.com/2012/12/07/installing-cuda-5-on-ubuntu-12-04/ Installing CUDA on Ubuntu]&lt;br /&gt;
* [http://graphics.stanford.edu/~mhouston/public_talks/R520-mhouston.pdf General Purpose Computation on GPUs (GPGPU)]&lt;br /&gt;
*  Convey vector personalities offer OpenMP-like programming approach with FPGA accelerating. [http://www.fpl2012.org/Presentations/W4B2.pdf]&lt;br /&gt;
* [[Media:Connect_Remotely_Via_VPN.pdf | Guide to Remote Connecting]]&lt;br /&gt;
&lt;br /&gt;
== Readings for Memocode 2012 ==&lt;br /&gt;
*[[Media:Brief_Bioinform-2010-Li-473-83.pdf|A survey on algorithms for sequencing]]&lt;br /&gt;
*[[Media:Gb-2009-10-3-r25.pdf|Burrows-Wheeler indexing]]&lt;br /&gt;
&lt;br /&gt;
== Spring 2012 Teams ==&lt;br /&gt;
* [[Team Gryffindor]]&lt;br /&gt;
* [[Team Slytherin]]&lt;br /&gt;
* [[Team 142857]]&lt;br /&gt;
== Spring 2013 Teams ==&lt;br /&gt;
* [[Team Cyc05]]&lt;br /&gt;
* [[Team Challenger]]&lt;br /&gt;
* [[Team Blitz]]&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=846</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=846"/>
		<updated>2013-02-08T01:14:28Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General FAQ ==&lt;br /&gt;
&lt;br /&gt;
==== How to start my own custom personality project? ====&lt;br /&gt;
Use the &#039;&#039;&#039;cnyScript&#039;&#039;&#039; as described in this tutorial: [[Convey PDK Tutorial]]&lt;br /&gt;
&lt;br /&gt;
=== How to add new verilog files or directories to a PDK project? ===&lt;br /&gt;
By default, the PDK looks like the project/verilog directory and compiles all .v files found there.  To add other Verilog directories, use this makefile variable:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;nowiki&amp;gt;USER_VERILOG_DIRS  += ../../verilog&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Simulator Related ==&lt;br /&gt;
&lt;br /&gt;
==== Where can I find the personality signals? ====&lt;br /&gt;
You can find your custom personality signals in the &amp;quot;sim&amp;quot; window in ModelSim under &amp;lt;code&amp;gt;testbench &amp;gt; cae_fpga0 &amp;gt; ae_top &amp;gt; core &amp;gt; cae_pers&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How to keep the waves I simulated? ====&lt;br /&gt;
After adding the signals to the wave window, make sure to click anywhere in the waves window. Then, click the save button and save the current signals as &amp;quot;do&amp;quot; file. Next time you want to show the previous signals, open ModelSim using the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;vsim &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in the ModelSim command-line, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;do sim/wave.do&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, click the &amp;quot;open&amp;quot; button and open the &amp;quot;vsim.wlf&amp;quot; file in the &amp;quot;sim&amp;quot; directory of your project.&lt;br /&gt;
&lt;br /&gt;
==== How to run Modelsim GUI while simulating? ====&lt;br /&gt;
You may run the simulation in interactive mode by adding the following line to the makefile in the sim directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;USER_SIM_OPTIONS = -gui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another option is to edit the test bench (sim/tb_user.v shown below) to dump the waveforms to a file, then run the hardware simulator via command line, and finally open up the waveform file (vsim -v ./sim/vsim.wlf).  This has the benefit of dumping all the signals (if your wave.do file was missing something, you&#039;d have to rerun the simulation).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;`timescale 1 ns / 1 ps&lt;br /&gt;
&lt;br /&gt;
module tb_user();&lt;br /&gt;
&lt;br /&gt;
  initial begin&lt;br /&gt;
    // Insert user code here, such as signal dumping&lt;br /&gt;
    // set CNY_PDK_TB_USER_VLOG variable in sim/makefile&lt;br /&gt;
`include &amp;quot;PDK_SIM_CONFIG.vh&amp;quot;&lt;br /&gt;
`ifdef AE0_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga0.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE1_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga1.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE2_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga2.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE3_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga3.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
endmodule&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Emulator Related ==&lt;br /&gt;
&lt;br /&gt;
==== How to read AEG registers in the emulator? ====&lt;br /&gt;
You can use the following function:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
uint64 AegRead(int aeId, int aegIdx);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How to read/write the memory in the emulator? ====&lt;br /&gt;
You can use the functions AeMemLoad and AeMemStore to read and write from/to the memory as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
bool AeMemLoad (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data); &amp;lt;br /&amp;gt;&lt;br /&gt;
bool AeMemStore (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=845</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=845"/>
		<updated>2013-02-08T01:14:08Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General FAQ ==&lt;br /&gt;
&lt;br /&gt;
==== How to start my own custom personality project? ====&lt;br /&gt;
Use the &#039;&#039;&#039;cnyScript&#039;&#039;&#039; as described in this tutorial: [[Convey PDK Tutorial]]&lt;br /&gt;
&lt;br /&gt;
=== How to add new verilog files or directories to a PDK project? ===&lt;br /&gt;
By default, the PDK looks like the project/verilog directory and compiles all .v files found there.  To add other Verilog directories, use this makefile variable:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;nowiki&amp;gt;USER_VERILOG_DIRS  += ../../verilog&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Simulator Related ==&lt;br /&gt;
&lt;br /&gt;
==== Where can I find the personality signals? ====&lt;br /&gt;
You can find your custom personality signals in the &amp;quot;sim&amp;quot; window in ModelSim under &amp;lt;code&amp;gt;testbench &amp;gt; cae_fpga0 &amp;gt; ae_top &amp;gt; core &amp;gt; cae_pers&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to keep the waves I simulated? ===&lt;br /&gt;
After adding the signals to the wave window, make sure to click anywhere in the waves window. Then, click the save button and save the current signals as &amp;quot;do&amp;quot; file. Next time you want to show the previous signals, open ModelSim using the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;vsim &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in the ModelSim command-line, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;do sim/wave.do&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, click the &amp;quot;open&amp;quot; button and open the &amp;quot;vsim.wlf&amp;quot; file in the &amp;quot;sim&amp;quot; directory of your project.&lt;br /&gt;
&lt;br /&gt;
==== How to run Modelsim GUI while simulating? ====&lt;br /&gt;
You may run the simulation in interactive mode by adding the following line to the makefile in the sim directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;USER_SIM_OPTIONS = -gui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another option is to edit the test bench (sim/tb_user.v shown below) to dump the waveforms to a file, then run the hardware simulator via command line, and finally open up the waveform file (vsim -v ./sim/vsim.wlf).  This has the benefit of dumping all the signals (if your wave.do file was missing something, you&#039;d have to rerun the simulation).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;`timescale 1 ns / 1 ps&lt;br /&gt;
&lt;br /&gt;
module tb_user();&lt;br /&gt;
&lt;br /&gt;
  initial begin&lt;br /&gt;
    // Insert user code here, such as signal dumping&lt;br /&gt;
    // set CNY_PDK_TB_USER_VLOG variable in sim/makefile&lt;br /&gt;
`include &amp;quot;PDK_SIM_CONFIG.vh&amp;quot;&lt;br /&gt;
`ifdef AE0_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga0.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE1_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga1.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE2_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga2.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE3_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga3.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
endmodule&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Emulator Related ==&lt;br /&gt;
&lt;br /&gt;
==== How to read AEG registers in the emulator? ====&lt;br /&gt;
You can use the following function:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
uint64 AegRead(int aeId, int aegIdx);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How to read/write the memory in the emulator? ====&lt;br /&gt;
You can use the functions AeMemLoad and AeMemStore to read and write from/to the memory as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
bool AeMemLoad (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data); &amp;lt;br /&amp;gt;&lt;br /&gt;
bool AeMemStore (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=844</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=844"/>
		<updated>2013-02-08T01:13:17Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General FAQ ==&lt;br /&gt;
&lt;br /&gt;
=== How to start my own custom personality project? ===&lt;br /&gt;
Use the &#039;&#039;&#039;cnyScript&#039;&#039;&#039; as described in this tutorial: [[Convey PDK Tutorial]]&lt;br /&gt;
&lt;br /&gt;
=== How to add new verilog files or directories to a PDK project? ===&lt;br /&gt;
By default, the PDK looks like the project/verilog directory and compiles all .v files found there.  To add other Verilog directories, use this makefile variable:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;nowiki&amp;gt;USER_VERILOG_DIRS  += ../../verilog&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Simulator Related ==&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the personality signals? ===&lt;br /&gt;
You can find your custom personality signals in the &amp;quot;sim&amp;quot; window in ModelSim under &amp;lt;code&amp;gt;testbench &amp;gt; cae_fpga0 &amp;gt; ae_top &amp;gt; core &amp;gt; cae_pers&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to keep the waves I simulated? ===&lt;br /&gt;
After adding the signals to the wave window, make sure to click anywhere in the waves window. Then, click the save button and save the current signals as &amp;quot;do&amp;quot; file. Next time you want to show the previous signals, open ModelSim using the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;vsim &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in the ModelSim command-line, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;do sim/wave.do&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, click the &amp;quot;open&amp;quot; button and open the &amp;quot;vsim.wlf&amp;quot; file in the &amp;quot;sim&amp;quot; directory of your project.&lt;br /&gt;
&lt;br /&gt;
=== How to run Modelsim GUI while simulating? ===&lt;br /&gt;
You may run the simulation in interactive mode by adding the following line to the makefile in the sim directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;USER_SIM_OPTIONS = -gui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another option is to edit the test bench (sim/tb_user.v shown below) to dump the waveforms to a file, then run the hardware simulator via command line, and finally open up the waveform file (vsim -v ./sim/vsim.wlf).  This has the benefit of dumping all the signals (if your wave.do file was missing something, you&#039;d have to rerun the simulation).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;`timescale 1 ns / 1 ps&lt;br /&gt;
&lt;br /&gt;
module tb_user();&lt;br /&gt;
&lt;br /&gt;
  initial begin&lt;br /&gt;
    // Insert user code here, such as signal dumping&lt;br /&gt;
    // set CNY_PDK_TB_USER_VLOG variable in sim/makefile&lt;br /&gt;
`include &amp;quot;PDK_SIM_CONFIG.vh&amp;quot;&lt;br /&gt;
`ifdef AE0_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga0.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE1_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga1.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE2_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga2.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE3_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga3.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
endmodule&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Emulator Related ==&lt;br /&gt;
&lt;br /&gt;
=== How to read AEG registers in the emulator? ===&lt;br /&gt;
You can use the following function:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
uint64 AegRead(int aeId, int aegIdx);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to read/write the memory in the emulator? ===&lt;br /&gt;
You can use the functions AeMemLoad and AeMemStore to read and write from/to the memory as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
bool AeMemLoad (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data); &amp;lt;br /&amp;gt;&lt;br /&gt;
bool AeMemStore (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=843</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=843"/>
		<updated>2013-02-08T01:12:47Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General FAQ ==&lt;br /&gt;
&lt;br /&gt;
=== How to start my own custom personality project? ===&lt;br /&gt;
Use the &#039;&#039;&#039;cnyScript&#039;&#039;&#039; as described in this tutorial: [[Convey PDK Tutorial]]&lt;br /&gt;
&lt;br /&gt;
=== How to add new verilog files or directories to a PDK project? ===&lt;br /&gt;
By default, the PDK looks like the project/verilog directory and compiles all .v files found there.  To add other Verilog directories, use this makefile variable:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;nowiki&amp;gt;USER_VERILOG_DIRS  += ../../verilog&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Emulator Related ==&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the personality signals? ===&lt;br /&gt;
You can find your custom personality signals in the &amp;quot;sim&amp;quot; window in ModelSim under &amp;lt;code&amp;gt;testbench &amp;gt; cae_fpga0 &amp;gt; ae_top &amp;gt; core &amp;gt; cae_pers&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to keep the waves I simulated? ===&lt;br /&gt;
After adding the signals to the wave window, make sure to click anywhere in the waves window. Then, click the save button and save the current signals as &amp;quot;do&amp;quot; file. Next time you want to show the previous signals, open ModelSim using the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;vsim &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in the ModelSim command-line, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;do sim/wave.do&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, click the &amp;quot;open&amp;quot; button and open the &amp;quot;vsim.wlf&amp;quot; file in the &amp;quot;sim&amp;quot; directory of your project.&lt;br /&gt;
&lt;br /&gt;
=== How to run Modelsim GUI while simulating? ===&lt;br /&gt;
You may run the simulation in interactive mode by adding the following line to the makefile in the sim directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;USER_SIM_OPTIONS = -gui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another option is to edit the test bench (sim/tb_user.v shown below) to dump the waveforms to a file, then run the hardware simulator via command line, and finally open up the waveform file (vsim -v ./sim/vsim.wlf).  This has the benefit of dumping all the signals (if your wave.do file was missing something, you&#039;d have to rerun the simulation).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;`timescale 1 ns / 1 ps&lt;br /&gt;
&lt;br /&gt;
module tb_user();&lt;br /&gt;
&lt;br /&gt;
  initial begin&lt;br /&gt;
    // Insert user code here, such as signal dumping&lt;br /&gt;
    // set CNY_PDK_TB_USER_VLOG variable in sim/makefile&lt;br /&gt;
`include &amp;quot;PDK_SIM_CONFIG.vh&amp;quot;&lt;br /&gt;
`ifdef AE0_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga0.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE1_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga1.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE2_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga2.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE3_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga3.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
endmodule&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Emulator Related ==&lt;br /&gt;
&lt;br /&gt;
=== How to read AEG registers in the emulator? ===&lt;br /&gt;
You can use the following function:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
uint64 AegRead(int aeId, int aegIdx);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to read/write the memory in the emulator? ===&lt;br /&gt;
You can use the functions AeMemLoad and AeMemStore to read and write from/to the memory as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
bool AeMemLoad (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data); &amp;lt;br /&amp;gt;&lt;br /&gt;
bool AeMemStore (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=842</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=842"/>
		<updated>2013-02-08T00:30:16Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General FAQ ==&lt;br /&gt;
&lt;br /&gt;
=== How to add new verilog files or directories to a PDK project? ===&lt;br /&gt;
&lt;br /&gt;
By default, the PDK looks like the project/verilog directory and compiles all .v files found there.  To add other Verilog directories, use this makefile variable:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;nowiki&amp;gt;USER_VERILOG_DIRS  += ../../verilog&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Emulator Related ==&lt;br /&gt;
&lt;br /&gt;
=== How to keep the waves I simulated? ===&lt;br /&gt;
After adding the signals to the wave window, make sure to click anywhere in the waves window. Then, click the save button and save the current signals as &amp;quot;do&amp;quot; file. Next time you want to show the previous signals, open ModelSim using the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;vsim &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in the ModelSim command-line, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;do sim/wave.do&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, click the &amp;quot;open&amp;quot; button and open the &amp;quot;vsim.wlf&amp;quot; file in the &amp;quot;sim&amp;quot; directory of your project.&lt;br /&gt;
&lt;br /&gt;
=== How to run Modelsim GUI while simulating? ===&lt;br /&gt;
You may run the simulation in interactive mode by adding the following line to the makefile in the sim directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;USER_SIM_OPTIONS = -gui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another option is to edit the test bench (sim/tb_user.v shown below) to dump the waveforms to a file, then run the hardware simulator via command line, and finally open up the waveform file (vsim -v ./sim/vsim.wlf).  This has the benefit of dumping all the signals (if your wave.do file was missing something, you&#039;d have to rerun the simulation).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;`timescale 1 ns / 1 ps&lt;br /&gt;
&lt;br /&gt;
module tb_user();&lt;br /&gt;
&lt;br /&gt;
  initial begin&lt;br /&gt;
    // Insert user code here, such as signal dumping&lt;br /&gt;
    // set CNY_PDK_TB_USER_VLOG variable in sim/makefile&lt;br /&gt;
`include &amp;quot;PDK_SIM_CONFIG.vh&amp;quot;&lt;br /&gt;
`ifdef AE0_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga0.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE1_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga1.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE2_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga2.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE3_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga3.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
endmodule&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Emulator Related ==&lt;br /&gt;
&lt;br /&gt;
=== How to read AEG registers in the emulator? ===&lt;br /&gt;
You can use the following function:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
uint64 AegRead(int aeId, int aegIdx);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to read/write the memory in the emulator? ===&lt;br /&gt;
You can use the functions AeMemLoad and AeMemStore to read and write from/to the memory as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
bool AeMemLoad (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data); &amp;lt;br /&amp;gt;&lt;br /&gt;
bool AeMemStore (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=841</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Frequently_Asked_Questions&amp;diff=841"/>
		<updated>2013-02-08T00:30:07Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General FAQ ==&lt;br /&gt;
&lt;br /&gt;
=== How to add new verilog files or directories to a PDK project? ===&lt;br /&gt;
&lt;br /&gt;
By default, the PDK looks like the project/verilog directory and compiles all .v files found there.  To add other Verilog directories, use this makefile variable:&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;nowiki&amp;gt;USER_VERILOG_DIRS  += ../../verilog&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Emulator Related ==&lt;br /&gt;
&lt;br /&gt;
=== How to keep the waves I simulated? ===&lt;br /&gt;
After adding the signals to the wave window, make sure to click anywhere in the waves window. Then, click the save button and save the current signals as &amp;quot;do&amp;quot; file. Next time you want to show the previous signals, open ModelSim using the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;vsim &amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in the ModelSim command-line, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;do sim/wave.do&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, click the &amp;quot;open&amp;quot; button and open the &amp;quot;vsim.wlf&amp;quot; file in the &amp;quot;sim&amp;quot; directory of your project.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How to run Modelsim GUI while simulating? ===&lt;br /&gt;
You may run the simulation in interactive mode by adding the following line to the makefile in the sim directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;USER_SIM_OPTIONS = -gui&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another option is to edit the test bench (sim/tb_user.v shown below) to dump the waveforms to a file, then run the hardware simulator via command line, and finally open up the waveform file (vsim -v ./sim/vsim.wlf).  This has the benefit of dumping all the signals (if your wave.do file was missing something, you&#039;d have to rerun the simulation).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;`timescale 1 ns / 1 ps&lt;br /&gt;
&lt;br /&gt;
module tb_user();&lt;br /&gt;
&lt;br /&gt;
  initial begin&lt;br /&gt;
    // Insert user code here, such as signal dumping&lt;br /&gt;
    // set CNY_PDK_TB_USER_VLOG variable in sim/makefile&lt;br /&gt;
`include &amp;quot;PDK_SIM_CONFIG.vh&amp;quot;&lt;br /&gt;
`ifdef AE0_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga0.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE1_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga1.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE2_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga2.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
`ifdef AE3_PRESENT&lt;br /&gt;
    $wlfdumpvars(5,testbench.cae_fpga3.ae_top.core.cae_pers);&lt;br /&gt;
`endif&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
endmodule&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Emulator Related ==&lt;br /&gt;
&lt;br /&gt;
=== How to read AEG registers in the emulator? ===&lt;br /&gt;
You can use the following function:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
uint64 AegRead(int aeId, int aegIdx);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to read/write the memory in the emulator? ===&lt;br /&gt;
You can use the functions AeMemLoad and AeMemStore to read and write from/to the memory as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
bool AeMemLoad (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data); &amp;lt;br /&amp;gt;&lt;br /&gt;
bool AeMemStore (int aeId, int mcId, unint64 addr, int size, bool bSigned, uint64 &amp;amp;data);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Using_the_Memory_Controller_Interface&amp;diff=836</id>
		<title>Using the Memory Controller Interface</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Using_the_Memory_Controller_Interface&amp;diff=836"/>
		<updated>2013-02-06T00:11:09Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: /* Memory Controller Interface functionality */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Memory Controller Interface functionality ==&lt;br /&gt;
* Each of the Convey application engines are connected to 8 MCs (Memory Controllers) through 300MHz DDR interface.&lt;br /&gt;
* Each of the 8 MC interfaces consists of two 150MHz ports (odd port and even port). So, the MC interface contains a total of 16 port.&lt;br /&gt;
* The data from the two even and odd ports are multiplexed onto the same 300 MHz channel in the MC interface.&lt;br /&gt;
* Each of the even and odd ports has its request signals and response signals.&lt;br /&gt;
* Refer to section 9.3.3.1 in the PDK reference manual for further information.&lt;br /&gt;
&lt;br /&gt;
== Memory Controller Interface Signals ==&lt;br /&gt;
The 4th MC interface of the 8 MC interfaces has the signals shown in the table below. There exist MC interfaces for n = 0 to 7. Also, you can notice that the signals are the same for the even and odd port. However, the signals for the even port use the suffix &amp;lt;code&amp;gt;_e&amp;lt;/code&amp;gt; and the signals for the odd port use the suffix &amp;lt;code&amp;gt;_o&amp;lt;/code&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Even Port || Odd Port&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_ld_e || mc4_req_ld_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_st_e || mc4_req_st_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_size_e&amp;lt;1:0&amp;gt; || mc4_req_size_o&amp;lt;1:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_vadr_e&amp;lt;47:0&amp;gt; || mc4_req_vadr_o&amp;lt;47:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_wrd_rdctl_e&amp;lt;63:0&amp;gt; || mc4_req_wrd_rdctl_o&amp;lt;63:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_flush_e || mc4_req_flush_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rd_rq_stall_e || mc4_rd_rq_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_wr_rq_stall_e || mc4_wr_rq_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_push_e || mc4_rsp_push_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_stall_e || mc4_rsp_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_data_e&amp;lt;63:0&amp;gt; || mc4_rsp_data_o&amp;lt;63:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_rdctl_e&amp;lt;31:0&amp;gt; || mc4_rsp_rdctl_o&amp;lt;31:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_flush_cmplt_e || mc4_rsp_flush_cmplt_o&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reading from Memory ==&lt;br /&gt;
* Before requesting any read from the memory, you have to make sure that &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rd_rq_stall_* = &#039;0&#039;&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; is the MC interface port number (could be from 0 to 7).&lt;br /&gt;
* To request a read from memory, you have to assert the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_ld_*&amp;lt;/code&amp;gt; and put the address of the data you want to read on the port &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_vadr_*&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_size_*&amp;lt;1:0&amp;gt;&amp;lt;/code&amp;gt; is used to indicate if you want to read a byte, word, double-word or quad-word (i.e. 0x0 for byte, and 0x3 for quad-word).&lt;br /&gt;
* You can get requested data from the &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rsp_data_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; bus when the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rsp_push_*&amp;lt;/code&amp;gt; is asserted.&lt;br /&gt;
* The lower 32 bits of &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; will be returned as &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rsp_rdctl_o&amp;lt;31:0&amp;gt;&amp;lt;/code&amp;gt;. You should set it while requesting a read and check it in the response to identify your request.&lt;br /&gt;
&lt;br /&gt;
== Writing to Memory ==&lt;br /&gt;
* Before requesting any write to the memory, you have to make sure that &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_wr_rq_stall_* = &#039;0&#039;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* To request a write to memory, you have to assert the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_st_*&amp;lt;/code&amp;gt; and put the address of the data you want to write to on the port &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_vadr_*&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_size_*&amp;lt;1:0&amp;gt;&amp;lt;/code&amp;gt; is used to indicate the size as in the read scenario above.&lt;br /&gt;
* The data you want to write should goes on &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; bus.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [[Media:ConveyPDKReferenceManual.pdf | Convey PDK Reference Manual (.pdf)]] - Sections 9.3.3&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Cyc05_Week_3.pdf&amp;diff=835</id>
		<title>File:Cyc05 Week 3.pdf</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Cyc05_Week_3.pdf&amp;diff=835"/>
		<updated>2013-02-06T00:05:44Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Using_the_Memory_Controller_Interface&amp;diff=834</id>
		<title>Using the Memory Controller Interface</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Using_the_Memory_Controller_Interface&amp;diff=834"/>
		<updated>2013-02-06T00:00:13Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: /* Reading from Memory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Memory Controller Interface functionality ==&lt;br /&gt;
* Each of the Convey application engines are connected to 8 MCs (Memory Controllers) through 300MHz DDR interface.&lt;br /&gt;
* Each of the 8 MC interfaces consists of two 150MHz ports (odd port and even port). So, the MC interface contains a total of 16 port.&lt;br /&gt;
* The data from the two even and odd ports are multiplexed onto the same 300 MHz channel in the MC interface.&lt;br /&gt;
* Each of the even and odd ports has its request signals and response signals.&lt;br /&gt;
* Refer to section 9.3.3.1 in the PDK reference manual for further informations.&lt;br /&gt;
&lt;br /&gt;
== Memory Controller Interface Signals ==&lt;br /&gt;
The 4th MC interface of the 8 MC interfaces has the signals shown in the table below. There exist MC interfaces for n = 0 to 7. Also, you can notice that the signals are the same for the even and odd port. However, the signals for the even port use the suffix &amp;lt;code&amp;gt;_e&amp;lt;/code&amp;gt; and the signals for the odd port use the suffix &amp;lt;code&amp;gt;_o&amp;lt;/code&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Even Port || Odd Port&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_ld_e || mc4_req_ld_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_st_e || mc4_req_st_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_size_e&amp;lt;1:0&amp;gt; || mc4_req_size_o&amp;lt;1:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_vadr_e&amp;lt;47:0&amp;gt; || mc4_req_vadr_o&amp;lt;47:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_wrd_rdctl_e&amp;lt;63:0&amp;gt; || mc4_req_wrd_rdctl_o&amp;lt;63:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_flush_e || mc4_req_flush_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rd_rq_stall_e || mc4_rd_rq_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_wr_rq_stall_e || mc4_wr_rq_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_push_e || mc4_rsp_push_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_stall_e || mc4_rsp_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_data_e&amp;lt;63:0&amp;gt; || mc4_rsp_data_o&amp;lt;63:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_rdctl_e&amp;lt;31:0&amp;gt; || mc4_rsp_rdctl_o&amp;lt;31:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_flush_cmplt_e || mc4_rsp_flush_cmplt_o&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reading from Memory ==&lt;br /&gt;
* Before requesting any read from the memory, you have to make sure that &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rd_rq_stall_* = &#039;0&#039;&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; is the MC interface port number (could be from 0 to 7).&lt;br /&gt;
* To request a read from memory, you have to assert the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_ld_*&amp;lt;/code&amp;gt; and put the address of the data you want to read on the port &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_vadr_*&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_size_*&amp;lt;1:0&amp;gt;&amp;lt;/code&amp;gt; is used to indicate if you want to read a byte, word, double-word or quad-word (i.e. 0x0 for byte, and 0x3 for quad-word).&lt;br /&gt;
* You can get requested data from the &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rsp_data_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; bus when the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rsp_push_*&amp;lt;/code&amp;gt; is asserted.&lt;br /&gt;
* The lower 32 bits of &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; will be returned as &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rsp_rdctl_o&amp;lt;31:0&amp;gt;&amp;lt;/code&amp;gt;. You should set it while requesting a read and check it in the response to identify your request.&lt;br /&gt;
&lt;br /&gt;
== Writing to Memory ==&lt;br /&gt;
* Before requesting any write to the memory, you have to make sure that &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_wr_rq_stall_* = &#039;0&#039;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* To request a write to memory, you have to assert the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_st_*&amp;lt;/code&amp;gt; and put the address of the data you want to write to on the port &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_vadr_*&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_size_*&amp;lt;1:0&amp;gt;&amp;lt;/code&amp;gt; is used to indicate the size as in the read scenario above.&lt;br /&gt;
* The data you want to write should goes on &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; bus.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [[Media:ConveyPDKReferenceManual.pdf | Convey PDK Reference Manual (.pdf)]] - Sections 9.3.3&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Using_the_Memory_Controller_Interface&amp;diff=833</id>
		<title>Using the Memory Controller Interface</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Using_the_Memory_Controller_Interface&amp;diff=833"/>
		<updated>2013-02-06T00:00:02Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: /* Reading from Memory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Memory Controller Interface functionality ==&lt;br /&gt;
* Each of the Convey application engines are connected to 8 MCs (Memory Controllers) through 300MHz DDR interface.&lt;br /&gt;
* Each of the 8 MC interfaces consists of two 150MHz ports (odd port and even port). So, the MC interface contains a total of 16 port.&lt;br /&gt;
* The data from the two even and odd ports are multiplexed onto the same 300 MHz channel in the MC interface.&lt;br /&gt;
* Each of the even and odd ports has its request signals and response signals.&lt;br /&gt;
* Refer to section 9.3.3.1 in the PDK reference manual for further informations.&lt;br /&gt;
&lt;br /&gt;
== Memory Controller Interface Signals ==&lt;br /&gt;
The 4th MC interface of the 8 MC interfaces has the signals shown in the table below. There exist MC interfaces for n = 0 to 7. Also, you can notice that the signals are the same for the even and odd port. However, the signals for the even port use the suffix &amp;lt;code&amp;gt;_e&amp;lt;/code&amp;gt; and the signals for the odd port use the suffix &amp;lt;code&amp;gt;_o&amp;lt;/code&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Even Port || Odd Port&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_ld_e || mc4_req_ld_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_st_e || mc4_req_st_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_size_e&amp;lt;1:0&amp;gt; || mc4_req_size_o&amp;lt;1:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_vadr_e&amp;lt;47:0&amp;gt; || mc4_req_vadr_o&amp;lt;47:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_wrd_rdctl_e&amp;lt;63:0&amp;gt; || mc4_req_wrd_rdctl_o&amp;lt;63:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_flush_e || mc4_req_flush_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rd_rq_stall_e || mc4_rd_rq_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_wr_rq_stall_e || mc4_wr_rq_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_push_e || mc4_rsp_push_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_stall_e || mc4_rsp_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_data_e&amp;lt;63:0&amp;gt; || mc4_rsp_data_o&amp;lt;63:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_rdctl_e&amp;lt;31:0&amp;gt; || mc4_rsp_rdctl_o&amp;lt;31:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_flush_cmplt_e || mc4_rsp_flush_cmplt_o&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reading from Memory ==&lt;br /&gt;
* Before requesting any read from the memory, you have to make sure that &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rd_rq_stall_* = &#039;0&#039;&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; is the MC interface port number (could be from 0 to 7).&lt;br /&gt;
* To request a read from memory, you have to assert the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_ld_*&amp;lt;/code&amp;gt; and put the address of the data you want to read on the port &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_vadr_*&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_size_*&amp;lt;1:0&amp;gt;&amp;lt;/code&amp;gt; is used to indicate if you want to read a byte, word, double-word or quad-word (i.e. 0x0 for byte, and 0x3 for quad-word).&lt;br /&gt;
* You can get requested data from the &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rsp_data_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; bus when the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rsp_push_*&amp;lt;/code&amp;gt; is asserted.&lt;br /&gt;
* The lower 31 bits of &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; will be returned as &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rsp_rdctl_o&amp;lt;31:0&amp;gt;&amp;lt;/code&amp;gt;. You should set it while requesting a read and check it in the response to identify your request.&lt;br /&gt;
&lt;br /&gt;
== Writing to Memory ==&lt;br /&gt;
* Before requesting any write to the memory, you have to make sure that &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_wr_rq_stall_* = &#039;0&#039;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* To request a write to memory, you have to assert the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_st_*&amp;lt;/code&amp;gt; and put the address of the data you want to write to on the port &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_vadr_*&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_size_*&amp;lt;1:0&amp;gt;&amp;lt;/code&amp;gt; is used to indicate the size as in the read scenario above.&lt;br /&gt;
* The data you want to write should goes on &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; bus.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [[Media:ConveyPDKReferenceManual.pdf | Convey PDK Reference Manual (.pdf)]] - Sections 9.3.3&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Using_the_Memory_Controller_Interface&amp;diff=832</id>
		<title>Using the Memory Controller Interface</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Using_the_Memory_Controller_Interface&amp;diff=832"/>
		<updated>2013-02-05T23:59:19Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: /* Reading from Memory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Memory Controller Interface functionality ==&lt;br /&gt;
* Each of the Convey application engines are connected to 8 MCs (Memory Controllers) through 300MHz DDR interface.&lt;br /&gt;
* Each of the 8 MC interfaces consists of two 150MHz ports (odd port and even port). So, the MC interface contains a total of 16 port.&lt;br /&gt;
* The data from the two even and odd ports are multiplexed onto the same 300 MHz channel in the MC interface.&lt;br /&gt;
* Each of the even and odd ports has its request signals and response signals.&lt;br /&gt;
* Refer to section 9.3.3.1 in the PDK reference manual for further informations.&lt;br /&gt;
&lt;br /&gt;
== Memory Controller Interface Signals ==&lt;br /&gt;
The 4th MC interface of the 8 MC interfaces has the signals shown in the table below. There exist MC interfaces for n = 0 to 7. Also, you can notice that the signals are the same for the even and odd port. However, the signals for the even port use the suffix &amp;lt;code&amp;gt;_e&amp;lt;/code&amp;gt; and the signals for the odd port use the suffix &amp;lt;code&amp;gt;_o&amp;lt;/code&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Even Port || Odd Port&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_ld_e || mc4_req_ld_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_st_e || mc4_req_st_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_size_e&amp;lt;1:0&amp;gt; || mc4_req_size_o&amp;lt;1:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_vadr_e&amp;lt;47:0&amp;gt; || mc4_req_vadr_o&amp;lt;47:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_wrd_rdctl_e&amp;lt;63:0&amp;gt; || mc4_req_wrd_rdctl_o&amp;lt;63:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_flush_e || mc4_req_flush_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rd_rq_stall_e || mc4_rd_rq_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_wr_rq_stall_e || mc4_wr_rq_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_push_e || mc4_rsp_push_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_stall_e || mc4_rsp_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_data_e&amp;lt;63:0&amp;gt; || mc4_rsp_data_o&amp;lt;63:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_rdctl_e&amp;lt;31:0&amp;gt; || mc4_rsp_rdctl_o&amp;lt;31:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_flush_cmplt_e || mc4_rsp_flush_cmplt_o&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reading from Memory ==&lt;br /&gt;
* Before requesting any read from the memory, you have to make sure that &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rd_rq_stall_* = &#039;0&#039;&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; is the MC interface port number (could be from 0 to 7).&lt;br /&gt;
* To request a read from memory, you have to assert the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_ld_*&amp;lt;/code&amp;gt; and put the address of the data you want to read on the port &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_vadr_*&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_size_*&amp;lt;1:0&amp;gt;&amp;lt;/code&amp;gt; is used to indicate if you want to read a byte, word, double-word or quad-word (i.e. 0x0 for byte, and 0x3 for quad-word).&lt;br /&gt;
* You can get requested data from the &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rsp_data_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; bus when the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rsp_push_*&amp;lt;/code&amp;gt; is asserted.&lt;br /&gt;
* The lower 31 bits of &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; will be returned as &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt;. You should set it while requesting a read and check it in the response to identify your request.&lt;br /&gt;
&lt;br /&gt;
== Writing to Memory ==&lt;br /&gt;
* Before requesting any write to the memory, you have to make sure that &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_wr_rq_stall_* = &#039;0&#039;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* To request a write to memory, you have to assert the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_st_*&amp;lt;/code&amp;gt; and put the address of the data you want to write to on the port &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_vadr_*&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_size_*&amp;lt;1:0&amp;gt;&amp;lt;/code&amp;gt; is used to indicate the size as in the read scenario above.&lt;br /&gt;
* The data you want to write should goes on &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; bus.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [[Media:ConveyPDKReferenceManual.pdf | Convey PDK Reference Manual (.pdf)]] - Sections 9.3.3&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Using_the_Memory_Controller_Interface&amp;diff=831</id>
		<title>Using the Memory Controller Interface</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Using_the_Memory_Controller_Interface&amp;diff=831"/>
		<updated>2013-02-05T23:57:46Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: /* Writing to Memory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Memory Controller Interface functionality ==&lt;br /&gt;
* Each of the Convey application engines are connected to 8 MCs (Memory Controllers) through 300MHz DDR interface.&lt;br /&gt;
* Each of the 8 MC interfaces consists of two 150MHz ports (odd port and even port). So, the MC interface contains a total of 16 port.&lt;br /&gt;
* The data from the two even and odd ports are multiplexed onto the same 300 MHz channel in the MC interface.&lt;br /&gt;
* Each of the even and odd ports has its request signals and response signals.&lt;br /&gt;
* Refer to section 9.3.3.1 in the PDK reference manual for further informations.&lt;br /&gt;
&lt;br /&gt;
== Memory Controller Interface Signals ==&lt;br /&gt;
The 4th MC interface of the 8 MC interfaces has the signals shown in the table below. There exist MC interfaces for n = 0 to 7. Also, you can notice that the signals are the same for the even and odd port. However, the signals for the even port use the suffix &amp;lt;code&amp;gt;_e&amp;lt;/code&amp;gt; and the signals for the odd port use the suffix &amp;lt;code&amp;gt;_o&amp;lt;/code&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Even Port || Odd Port&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_ld_e || mc4_req_ld_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_st_e || mc4_req_st_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_size_e&amp;lt;1:0&amp;gt; || mc4_req_size_o&amp;lt;1:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_vadr_e&amp;lt;47:0&amp;gt; || mc4_req_vadr_o&amp;lt;47:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_wrd_rdctl_e&amp;lt;63:0&amp;gt; || mc4_req_wrd_rdctl_o&amp;lt;63:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_flush_e || mc4_req_flush_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rd_rq_stall_e || mc4_rd_rq_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_wr_rq_stall_e || mc4_wr_rq_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_push_e || mc4_rsp_push_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_stall_e || mc4_rsp_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_data_e&amp;lt;63:0&amp;gt; || mc4_rsp_data_o&amp;lt;63:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_rdctl_e&amp;lt;31:0&amp;gt; || mc4_rsp_rdctl_o&amp;lt;31:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_flush_cmplt_e || mc4_rsp_flush_cmplt_o&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reading from Memory ==&lt;br /&gt;
* Before requesting any read from the memory, you have to make sure that &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rd_rq_stall_* = &#039;0&#039;&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; is the MC interface port number (could be from 0 to 7).&lt;br /&gt;
* To request a read from memory, you have to assert the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_ld_*&amp;lt;/code&amp;gt; and put the address of the data you want to read on the port &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_vadr_*&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_size_*&amp;lt;1:0&amp;gt;&amp;lt;/code&amp;gt; is used to indicate if you want to read a byte, word, double-word or quad-word (i.e. 0x0 for byte, and 0x3 for quad-word).&lt;br /&gt;
* The MC interface will respond with the data on the &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rsp_data_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; bus.&lt;br /&gt;
* The lower 31 bits of &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; will be returned as &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt;. You should set it while requesting a read and check it in the response to identify your request.&lt;br /&gt;
&lt;br /&gt;
== Writing to Memory ==&lt;br /&gt;
* Before requesting any write to the memory, you have to make sure that &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_wr_rq_stall_* = &#039;0&#039;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* To request a write to memory, you have to assert the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_st_*&amp;lt;/code&amp;gt; and put the address of the data you want to write to on the port &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_vadr_*&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_size_*&amp;lt;1:0&amp;gt;&amp;lt;/code&amp;gt; is used to indicate the size as in the read scenario above.&lt;br /&gt;
* The data you want to write should goes on &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; bus.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [[Media:ConveyPDKReferenceManual.pdf | Convey PDK Reference Manual (.pdf)]] - Sections 9.3.3&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Using_the_Memory_Controller_Interface&amp;diff=830</id>
		<title>Using the Memory Controller Interface</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Using_the_Memory_Controller_Interface&amp;diff=830"/>
		<updated>2013-02-05T23:49:17Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Memory Controller Interface functionality ==&lt;br /&gt;
* Each of the Convey application engines are connected to 8 MCs (Memory Controllers) through 300MHz DDR interface.&lt;br /&gt;
* Each of the 8 MC interfaces consists of two 150MHz ports (odd port and even port). So, the MC interface contains a total of 16 port.&lt;br /&gt;
* The data from the two even and odd ports are multiplexed onto the same 300 MHz channel in the MC interface.&lt;br /&gt;
* Each of the even and odd ports has its request signals and response signals.&lt;br /&gt;
* Refer to section 9.3.3.1 in the PDK reference manual for further informations.&lt;br /&gt;
&lt;br /&gt;
== Memory Controller Interface Signals ==&lt;br /&gt;
The 4th MC interface of the 8 MC interfaces has the signals shown in the table below. There exist MC interfaces for n = 0 to 7. Also, you can notice that the signals are the same for the even and odd port. However, the signals for the even port use the suffix &amp;lt;code&amp;gt;_e&amp;lt;/code&amp;gt; and the signals for the odd port use the suffix &amp;lt;code&amp;gt;_o&amp;lt;/code&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Even Port || Odd Port&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_ld_e || mc4_req_ld_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_st_e || mc4_req_st_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_size_e&amp;lt;1:0&amp;gt; || mc4_req_size_o&amp;lt;1:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_vadr_e&amp;lt;47:0&amp;gt; || mc4_req_vadr_o&amp;lt;47:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_wrd_rdctl_e&amp;lt;63:0&amp;gt; || mc4_req_wrd_rdctl_o&amp;lt;63:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_flush_e || mc4_req_flush_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rd_rq_stall_e || mc4_rd_rq_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_wr_rq_stall_e || mc4_wr_rq_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_push_e || mc4_rsp_push_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_stall_e || mc4_rsp_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_data_e&amp;lt;63:0&amp;gt; || mc4_rsp_data_o&amp;lt;63:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_rdctl_e&amp;lt;31:0&amp;gt; || mc4_rsp_rdctl_o&amp;lt;31:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_flush_cmplt_e || mc4_rsp_flush_cmplt_o&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reading from Memory ==&lt;br /&gt;
* Before requesting any read from the memory, you have to make sure that &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rd_rq_stall_* = &#039;0&#039;&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; is the MC interface port number (could be from 0 to 7).&lt;br /&gt;
* To request a read from memory, you have to assert the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_ld_*&amp;lt;/code&amp;gt; and put the address of the data you want to read on the port &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_vadr_*&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_size_*&amp;lt;1:0&amp;gt;&amp;lt;/code&amp;gt; is used to indicate if you want to read a byte, word, double-word or quad-word (i.e. 0x0 for byte, and 0x3 for quad-word).&lt;br /&gt;
* The MC interface will respond with the data on the &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rsp_data_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; bus.&lt;br /&gt;
* The lower 31 bits of &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; will be returned as &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt;. You should set it while requesting a read and check it in the response to identify your request.&lt;br /&gt;
&lt;br /&gt;
== Writing to Memory ==&lt;br /&gt;
* Before requesting any read from the memory, you have to make sure that &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_wr_rq_stall_* = &#039;0&#039;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* To request a write to memory, you have to assert the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_st_*&amp;lt;/code&amp;gt; and put the address of the data you want to write to on the port &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_vadr_*&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_size_*&amp;lt;1:0&amp;gt;&amp;lt;/code&amp;gt; is used to indicate the size as in the read scenario above.&lt;br /&gt;
* The data you want to write should goes on &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; bus.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [[Media:ConveyPDKReferenceManual.pdf | Convey PDK Reference Manual (.pdf)]] - Sections 9.3.3&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Using_the_Memory_Controller_Interface&amp;diff=829</id>
		<title>Using the Memory Controller Interface</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Using_the_Memory_Controller_Interface&amp;diff=829"/>
		<updated>2013-02-05T23:47:48Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: /* Memory Controller Interface functionality */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Memory Controller Interface functionality ==&lt;br /&gt;
* Each of the Convey application engines are connected to 8 MCs (Memory Controllers) through 300MHz DDR interface.&lt;br /&gt;
* Each of the 8 MC interfaces consists of two 150MHz ports (odd port and even port). So, the MC interface contains a total of 16 port.&lt;br /&gt;
* The data from the two even and odd ports are multiplexed onto the same 300 MHz channel in the MC interface.&lt;br /&gt;
* Each of the even and odd ports has its request signals and response signals.&lt;br /&gt;
* Refer to section 9.3.3.1 in the PDK reference manual for further informations.&lt;br /&gt;
&lt;br /&gt;
== Memory Controller Interface Signals ==&lt;br /&gt;
The 4th MC interface of the 8 MC interfaces has the signals shown in the table below. There exist MC interfaces for n = 0 to 7. Also, you can notice that the signals are the same for the even and odd port. However, the signals for the even port use the suffix &amp;lt;code&amp;gt;_e&amp;lt;/code&amp;gt; and the signals for the odd port use the suffix &amp;lt;code&amp;gt;_o&amp;lt;/code&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Even Port || Odd Port&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_ld_e || mc4_req_ld_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_st_e || mc4_req_st_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_size_e&amp;lt;1:0&amp;gt; || mc4_req_size_o&amp;lt;1:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_vadr_e&amp;lt;47:0&amp;gt; || mc4_req_vadr_o&amp;lt;47:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_wrd_rdctl_e&amp;lt;63:0&amp;gt; || mc4_req_wrd_rdctl_o&amp;lt;63:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_flush_e || mc4_req_flush_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rd_rq_stall_e || mc4_rd_rq_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_wr_rq_stall_e || mc4_wr_rq_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_push_e || mc4_rsp_push_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_stall_e || mc4_rsp_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_data_e&amp;lt;63:0&amp;gt; || mc4_rsp_data_o&amp;lt;63:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_rdctl_e&amp;lt;31:0&amp;gt; || mc4_rsp_rdctl_o&amp;lt;31:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_flush_cmplt_e || mc4_rsp_flush_cmplt_o&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reading from Memory ==&lt;br /&gt;
* Before requesting any read from the memory, you have to make sure that &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rd_rq_stall_* = &#039;0&#039;&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; is the MC interface port number (could be from 0 to 7).&lt;br /&gt;
* To request a read from memory, you have to assert the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_ld_*&amp;lt;/code&amp;gt; and put the address of the data you want to read on the port &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_vadr_*&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_size_*&amp;lt;1:0&amp;gt;&amp;lt;/code&amp;gt; is used to indicate if you want to read a byte, word, double-word or quad-word (i.e. 0x0 for byte, and 0x3 for quad-word).&lt;br /&gt;
* The MC interface will respond with the data on the &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rsp_data_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; bus.&lt;br /&gt;
* The lower 31 bits of &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; will be returned as &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt;. You should set it while requesting a read and check it in the response to identify your request.&lt;br /&gt;
&lt;br /&gt;
== Writing to Memory ==&lt;br /&gt;
* Before requesting any read from the memory, you have to make sure that &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_wr_rq_stall_* = &#039;0&#039;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* To request a write to memory, you have to assert the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_st_*&amp;lt;/code&amp;gt; and put the address of the data you want to write to on the port &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_vadr_*&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_size_*&amp;lt;1:0&amp;gt;&amp;lt;/code&amp;gt; is used to indicate the size as in the read scenario above.&lt;br /&gt;
* The data you want to write should goes on &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; bus.&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Using_the_Memory_Controller_Interface&amp;diff=828</id>
		<title>Using the Memory Controller Interface</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Using_the_Memory_Controller_Interface&amp;diff=828"/>
		<updated>2013-02-05T23:45:41Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: /* Reading from Memory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Memory Controller Interface functionality ==&lt;br /&gt;
* Each of the Convey application engines are connected to 8 MCs (Memory Controllers) through 300MHz DDR interface.&lt;br /&gt;
* Each of the 8 MC interfaces consists of two 150MHz ports (odd port and even port). So, the MC interface contains a total of 16 port.&lt;br /&gt;
* The data from the two even and odd ports are multiplexed onto the same 300 MHz channel in the MC interface.&lt;br /&gt;
* Each of the even and odd ports has its request signals and response signals.&lt;br /&gt;
* Refer to section 9.3.3.1 in the PDK for further informations.&lt;br /&gt;
&lt;br /&gt;
== Memory Controller Interface Signals ==&lt;br /&gt;
The 4th MC interface of the 8 MC interfaces has the signals shown in the table below. There exist MC interfaces for n = 0 to 7. Also, you can notice that the signals are the same for the even and odd port. However, the signals for the even port use the suffix &amp;lt;code&amp;gt;_e&amp;lt;/code&amp;gt; and the signals for the odd port use the suffix &amp;lt;code&amp;gt;_o&amp;lt;/code&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Even Port || Odd Port&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_ld_e || mc4_req_ld_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_st_e || mc4_req_st_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_size_e&amp;lt;1:0&amp;gt; || mc4_req_size_o&amp;lt;1:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_vadr_e&amp;lt;47:0&amp;gt; || mc4_req_vadr_o&amp;lt;47:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_wrd_rdctl_e&amp;lt;63:0&amp;gt; || mc4_req_wrd_rdctl_o&amp;lt;63:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_flush_e || mc4_req_flush_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rd_rq_stall_e || mc4_rd_rq_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_wr_rq_stall_e || mc4_wr_rq_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_push_e || mc4_rsp_push_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_stall_e || mc4_rsp_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_data_e&amp;lt;63:0&amp;gt; || mc4_rsp_data_o&amp;lt;63:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_rdctl_e&amp;lt;31:0&amp;gt; || mc4_rsp_rdctl_o&amp;lt;31:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_flush_cmplt_e || mc4_rsp_flush_cmplt_o&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reading from Memory ==&lt;br /&gt;
* Before requesting any read from the memory, you have to make sure that &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rd_rq_stall_* = &#039;0&#039;&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; is the MC interface port number (could be from 0 to 7).&lt;br /&gt;
* To request a read from memory, you have to assert the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_ld_*&amp;lt;/code&amp;gt; and put the address of the data you want to read on the port &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_vadr_*&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_size_*&amp;lt;1:0&amp;gt;&amp;lt;/code&amp;gt; is used to indicate if you want to read a byte, word, double-word or quad-word (i.e. 0x0 for byte, and 0x3 for quad-word).&lt;br /&gt;
* The MC interface will respond with the data on the &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rsp_data_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; bus.&lt;br /&gt;
* The lower 31 bits of &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; will be returned as &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt;. You should set it while requesting a read and check it in the response to identify your request.&lt;br /&gt;
&lt;br /&gt;
== Writing to Memory ==&lt;br /&gt;
* Before requesting any read from the memory, you have to make sure that &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_wr_rq_stall_* = &#039;0&#039;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* To request a write to memory, you have to assert the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_st_*&amp;lt;/code&amp;gt; and put the address of the data you want to write to on the port &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_vadr_*&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_size_*&amp;lt;1:0&amp;gt;&amp;lt;/code&amp;gt; is used to indicate the size as in the read scenario above.&lt;br /&gt;
* The data you want to write should goes on &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; bus.&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Using_the_Memory_Controller_Interface&amp;diff=827</id>
		<title>Using the Memory Controller Interface</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Using_the_Memory_Controller_Interface&amp;diff=827"/>
		<updated>2013-02-05T23:37:35Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Memory Controller Interface functionality ==&lt;br /&gt;
* Each of the Convey application engines are connected to 8 MCs (Memory Controllers) through 300MHz DDR interface.&lt;br /&gt;
* Each of the 8 MC interfaces consists of two 150MHz ports (odd port and even port). So, the MC interface contains a total of 16 port.&lt;br /&gt;
* The data from the two even and odd ports are multiplexed onto the same 300 MHz channel in the MC interface.&lt;br /&gt;
* Each of the even and odd ports has its request signals and response signals.&lt;br /&gt;
* Refer to section 9.3.3.1 in the PDK for further informations.&lt;br /&gt;
&lt;br /&gt;
== Memory Controller Interface Signals ==&lt;br /&gt;
The 4th MC interface of the 8 MC interfaces has the signals shown in the table below. There exist MC interfaces for n = 0 to 7. Also, you can notice that the signals are the same for the even and odd port. However, the signals for the even port use the suffix &amp;lt;code&amp;gt;_e&amp;lt;/code&amp;gt; and the signals for the odd port use the suffix &amp;lt;code&amp;gt;_o&amp;lt;/code&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Even Port || Odd Port&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_ld_e || mc4_req_ld_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_st_e || mc4_req_st_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_size_e&amp;lt;1:0&amp;gt; || mc4_req_size_o&amp;lt;1:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_vadr_e&amp;lt;47:0&amp;gt; || mc4_req_vadr_o&amp;lt;47:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_wrd_rdctl_e&amp;lt;63:0&amp;gt; || mc4_req_wrd_rdctl_o&amp;lt;63:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_flush_e || mc4_req_flush_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rd_rq_stall_e || mc4_rd_rq_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_wr_rq_stall_e || mc4_wr_rq_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_push_e || mc4_rsp_push_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_stall_e || mc4_rsp_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_data_e&amp;lt;63:0&amp;gt; || mc4_rsp_data_o&amp;lt;63:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_rdctl_e&amp;lt;31:0&amp;gt; || mc4_rsp_rdctl_o&amp;lt;31:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_flush_cmplt_e || mc4_rsp_flush_cmplt_o&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reading from Memory ==&lt;br /&gt;
* Before requesting any read from the memory, you have to make sure that &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rd_rq_stall_* = &#039;0&#039;&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; is the MC interface port number (could be from 0 to 7).&lt;br /&gt;
* To request a read from memory, you have to assert the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_ld_*&amp;lt;/code&amp;gt; and put the address of the data you want to read on the port &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_vadr_*&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_size_*&amp;lt;1:0&amp;gt;&amp;lt;/code&amp;gt; is used to indicate if you want to read a byte, word, double-word or quad-word (i.e. 0x0 for byte, and 0x3 for quad-word).&lt;br /&gt;
* The lower 31 bits of &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; will be returned as &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt;. You should set it while requesting a read and check it in the response to identify your request.&lt;br /&gt;
&lt;br /&gt;
== Writing to Memory ==&lt;br /&gt;
* Before requesting any read from the memory, you have to make sure that &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_wr_rq_stall_* = &#039;0&#039;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* To request a write to memory, you have to assert the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_st_*&amp;lt;/code&amp;gt; and put the address of the data you want to write to on the port &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_vadr_*&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_size_*&amp;lt;1:0&amp;gt;&amp;lt;/code&amp;gt; is used to indicate the size as in the read scenario above.&lt;br /&gt;
* The data you want to write should goes on &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; bus.&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Cyc05&amp;diff=824</id>
		<title>Team Cyc05</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Cyc05&amp;diff=824"/>
		<updated>2013-02-05T23:28:20Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: /* Wiki Contributions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
|+&#039;&#039;&#039;Team Cyc05&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;200px&amp;quot; | [[Image:Cy.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#CD1014;&amp;quot; | Cyc05 Team Logo&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; &lt;br /&gt;
|+&#039;&#039;Team Members&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Osama G. Attia (ogamal)&lt;br /&gt;
|-&lt;br /&gt;
| Tyler Johnson (tyler07)&lt;br /&gt;
|-&lt;br /&gt;
| PengQing Xie (carterp)&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
* Osama G. Attia&lt;br /&gt;
* Tyler Johnson&lt;br /&gt;
* PengQing Xie&lt;br /&gt;
&lt;br /&gt;
== Weekly Presentations ==&lt;br /&gt;
*Week 1 - [[Media:Cyc05_-_Presentation_01.pdf | Presentation Slides Week 1]]&lt;br /&gt;
*Week 2 - [[Media:Cyc05_Week_2.pdf | Presentation Slides Week 2]]&lt;br /&gt;
&lt;br /&gt;
== Wiki Contributions ==&lt;br /&gt;
=== Tyler ===&lt;br /&gt;
*Week 1&lt;br /&gt;
**[[Useful Modelsim Commands]]&lt;br /&gt;
**[[Media:Modelsim_pe_user_10.0d.pdf | Modelsim Users Guide]]&lt;br /&gt;
*Week2&lt;br /&gt;
** [[Media:Connect_Remotely_Via_VPN.pdf | Guide to Remote Connecting]]&lt;br /&gt;
*Week3&lt;br /&gt;
**[[Adding VHDL Files to a Project]] Additions and alterations&lt;br /&gt;
**Hosted the scripts for Kevinss tutorial and provided a link for it&lt;br /&gt;
**Modified the landing page to Kevni&#039;t tutorial to have the pdf, and a link to the scripts&lt;br /&gt;
**Modified [[Tutorial: Creating a Custom Bitfile]], some details were unclear and/or left out about using your newly built bitfile&lt;br /&gt;
&lt;br /&gt;
=== Osama ===&lt;br /&gt;
*Week 1: Creating Team Cyc05 page.&lt;br /&gt;
*Week 2:&lt;br /&gt;
**Updating [[Connecting to convey-1.ece.iastate.edu]] with usage policy.&lt;br /&gt;
**Adding [[Frequently Asked Questions]] page.&lt;br /&gt;
* Week 3:&lt;br /&gt;
**Updating the [[Frequently Asked Questions]] page.&lt;br /&gt;
**Adding and maintaining the [[Using the Memory Controller Interface]] page.&lt;br /&gt;
&lt;br /&gt;
=== PengQing ===&lt;br /&gt;
*Week 1:&lt;br /&gt;
**[http://sn0v.wordpress.com/2012/12/07/installing-cuda-5-on-ubuntu-12-04/ Installing CUDA on Ubuntu]&lt;br /&gt;
**[http://graphics.stanford.edu/~mhouston/public_talks/R520-mhouston.pdf General Purpose Computation on GPUs (GPGPU)]&lt;br /&gt;
*Week 2:&lt;br /&gt;
**[http://vol.verilog.com/VOL/main.htm Verilog self-study online course]&lt;br /&gt;
**Week 3:&lt;br /&gt;
***[http://www.ece.msstate.edu/~reese/EE4743/lectures/verilog_intro_2002/verilog_intro_2002.pdf Verilog vs. VHDL]&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Using_the_Memory_Controller_Interface&amp;diff=823</id>
		<title>Using the Memory Controller Interface</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Using_the_Memory_Controller_Interface&amp;diff=823"/>
		<updated>2013-02-05T23:24:45Z</updated>

		<summary type="html">&lt;p&gt;Ogamal: /* Reading from Memory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Memory Controller Interface functionality ==&lt;br /&gt;
* Each of the Convey application engines are connected to 8 MCs (Memory Controllers) through 300MHz DDR interface.&lt;br /&gt;
* Each of the 8 MC interfaces consists of two 150MHz ports (odd port and even port). So, the MC interface contains a total of 16 port.&lt;br /&gt;
* The data from the two even and odd ports are multiplexed onto the same 300 MHz channel in the MC interface.&lt;br /&gt;
* Each of the even and odd ports has its request signals and response signals.&lt;br /&gt;
* Refer to section 9.3.3.1 in the PDK for further informations.&lt;br /&gt;
&lt;br /&gt;
== Memory Controller Interface Signals ==&lt;br /&gt;
The 4th MC interface of the 8 MC interfaces has the signals shown in the table below. There exist MC interfaces for n = 0 to 7. Also, you can notice that the signals are the same for the even and odd port. However, the signals for the even port use the suffix &amp;lt;code&amp;gt;_e&amp;lt;/code&amp;gt; and the signals for the odd port use the suffix &amp;lt;code&amp;gt;_o&amp;lt;/code&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Even Port || Odd Port&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_ld_e || mc4_req_ld_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_st_e || mc4_req_st_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_size_e&amp;lt;1:0&amp;gt; || mc4_req_size_o&amp;lt;1:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_vadr_e&amp;lt;47:0&amp;gt; || mc4_req_vadr_o&amp;lt;47:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_wrd_rdctl_e&amp;lt;63:0&amp;gt; || mc4_req_wrd_rdctl_o&amp;lt;63:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_req_flush_e || mc4_req_flush_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rd_rq_stall_e || mc4_rd_rq_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_wr_rq_stall_e || mc4_wr_rq_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_push_e || mc4_rsp_push_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_stall_e || mc4_rsp_stall_o&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_data_e&amp;lt;63:0&amp;gt; || mc4_rsp_data_o&amp;lt;63:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_rdctl_e&amp;lt;31:0&amp;gt; || mc4_rsp_rdctl_o&amp;lt;31:0&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| mc4_rsp_flush_cmplt_e || mc4_rsp_flush_cmplt_o&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reading from Memory ==&lt;br /&gt;
* Before requesting any read from the memory, you have to make sure that &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_rd_rq_stall_* = &#039;0&#039;&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; is the MC interface port number (could be from 0 to 7).&lt;br /&gt;
* To request a read from memory, you have to assert the signal &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_ld_*&amp;lt;/code&amp;gt; and put the address of the data you want to read on the port &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_vadr_*&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_size_*&amp;lt;1:0&amp;gt;&amp;lt;/code&amp;gt; is used to indicate if you want to read a byte, word, double-word or quad-word (i.e. 0x0 for byte, and 0x3 for quad-word).&lt;br /&gt;
* The lower 31 bits of &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt; will be returned as &amp;lt;code&amp;gt;&#039;&#039;&#039;mc&#039;&#039;&#039;&#039;&#039;i&#039;&#039;_req_wrd_rdctl_*&amp;lt;63:0&amp;gt;&amp;lt;/code&amp;gt;. You should set it while requesting a read and check it in the response to identify your request.&lt;br /&gt;
&lt;br /&gt;
== Writing to Memory ==&lt;/div&gt;</summary>
		<author><name>Ogamal</name></author>
	</entry>
</feed>