Skip to content
Snippets Groups Projects
Commit 8fe057cc authored by Yaman Umuroglu's avatar Yaman Umuroglu
Browse files

[FIFO] improve C++ FIFO sizing template

parent 9f8cf74b
No related branches found
No related tags found
No related merge requests found
......@@ -26,12 +26,6 @@ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
/*
verilator -Wno-fatal -Mdir . -y /data/finn/sickag/vivado_stitch_proj_k9817tc7 --CFLAGS "--std=c++11" -O3 --x-assign fast --x-initial fast --noassert --cc finn_design_wrapper.v --top-module finn_design_wrapper --exe sim-semseg.cpp --threads 4
make OPT_FAST="-O3 -march=native" -j4 -C $(pwd) -f Vfinn_design_wrapper.mk Vfinn_design_wrapper
*/
#include <iostream>
#include <fstream>
#include <cstddef>
......@@ -58,6 +52,7 @@ return main_time;
extern "C" { //Open an extern C closed below
Vfinn_design_wrapper* construct() {
Verilated::commandArgs(0, (const char**) nullptr);
//Verilated::traceEverOn(true);
Vfinn_design_wrapper* top = new Vfinn_design_wrapper();
return top;
}
......@@ -73,6 +68,27 @@ int destruct(Vfinn_design_wrapper* top) {
}
return 0;
}
VerilatedVcdC* tfp;
VerilatedVcdC* start_vcd_trace(Vfinn_design_wrapper* top, const char* filename) {
VerilatedVcdC* tfp = new VerilatedVcdC;
top->trace(tfp, 99);
tfp->open(filename);
return tfp;
}
int add_to_vcd_trace(VerilatedVcdC* tfp, int time) {
tfp->dump(time);
return 0;
}
int flush_vcd_trace(VerilatedVcdC* tfp) {
tfp->flush();
return 0;
}
int stop_vcd_trace(VerilatedVcdC* tfp) {
tfp->close();
return 0;
}
}
// end of code taken from pyverilator_wrapper.cpp generated by PyVerilator
......@@ -80,10 +96,13 @@ int destruct(Vfinn_design_wrapper* top) {
inline void toggle_clk() {
eval(top);
top->ap_clk = 1;
//add_to_vcd_trace(tfp, main_time);
eval(top);
top->ap_clk = 0;
//add_to_vcd_trace(tfp, main_time);
}
void reset() {
top->ap_rst_n = 0;
for(unsigned i = 0; i < 10; i++) {
......@@ -94,7 +113,7 @@ void reset() {
int main(int argc, char *argv[]) {
top = construct();
//tfp = start_vcd_trace(top, "trace.vcd");
unsigned n_iters_per_input = @ITERS_PER_INPUT@;
unsigned n_iters_per_output = @ITERS_PER_OUTPUT@;
unsigned n_inputs = @N_INPUTS@;
......@@ -143,6 +162,9 @@ int main(int argc, char *argv[]) {
exit_criterion = ((n_in_txns >= n_iters_per_input * n_inputs) && (n_out_txns >= n_iters_per_output * n_inputs)) || (iters > max_iters);
}
//flush_vcd_trace(tfp);
//stop_vcd_trace(tfp);
cout << "Simulation finished" << endl;
cout << "Number of inputs consumed " << n_in_txns << endl;
cout << "Number of outputs produced " << n_out_txns << endl;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment