Begin from the beginning: reset to port1 only
This commit is contained in:
parent
5f4930ae43
commit
1059e8d0e0
6 changed files with 99 additions and 10 deletions
81
doc/plan.org
81
doc/plan.org
|
@ -5769,7 +5769,8 @@ p4c --target bmv2 --arch v1model --std p4-16 "../p4src/checksum_diff.p4" -o "/ho
|
||||||
pcap/tcp-udp-delta-from-v6-2019-07-21-0853-h3.pcap | Bin 0 -> 2544 bytes
|
pcap/tcp-udp-delta-from-v6-2019-07-21-0853-h3.pcap | Bin 0 -> 2544 bytes
|
||||||
#+END_CENTER
|
#+END_CENTER
|
||||||
|
|
||||||
*** TODO 2019-07-21: Porting to netfpga: found relevant EMPTY FILE CHECK / config writes
|
*** DONE 2019-07-21: Porting to netfpga: found relevant EMPTY FILE CHECK / config writes
|
||||||
|
CLOSED: [2019-07-22 Mon 22:28]
|
||||||
**** DONE try1: Initial log
|
**** DONE try1: Initial log
|
||||||
CLOSED: [2019-07-21 Sun 14:03]
|
CLOSED: [2019-07-21 Sun 14:03]
|
||||||
If
|
If
|
||||||
|
@ -6058,6 +6059,7 @@ make: *** [sim] Error 1
|
||||||
make: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test'
|
make: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#+END_CENTER
|
#+END_CENTER
|
||||||
|
|
||||||
#+BEGIN_CENTER
|
#+BEGIN_CENTER
|
||||||
|
@ -6074,7 +6076,79 @@ def config_tables():
|
||||||
#+BEGIN_CENTER
|
#+BEGIN_CENTER
|
||||||
~/master-thesis/netpfga/minip4/simple_sume_switch/test/sim_switch_default/config_writes.py
|
~/master-thesis/netpfga/minip4/simple_sume_switch/test/sim_switch_default/config_writes.py
|
||||||
#+END_CENTER
|
#+END_CENTER
|
||||||
|
*** 2019-07-22: trying to "fix" the config_writes.py
|
||||||
|
#+BEGIN_CENTER
|
||||||
|
nico@nsg-System:~/master-thesis/netpfga/minip4/simple_sume_switch/test/sim_switch_default$ cat config_writes.py
|
||||||
|
|
||||||
|
from NFTest import *
|
||||||
|
|
||||||
|
NUM_WRITES = 0
|
||||||
|
|
||||||
|
def config_tables():
|
||||||
|
nico@nsg-System:~/master-thesis/netpfga/minip4/simple_sume_switch/test/sim_switch_default$ echo " pass" >> config_writes.py
|
||||||
|
nico@nsg-System:~/master-thesis/netpfga/minip4/simple_sume_switch/test/sim_switch_default$ cat config_writes.py
|
||||||
|
|
||||||
|
from NFTest import *
|
||||||
|
|
||||||
|
NUM_WRITES = 0
|
||||||
|
|
||||||
|
def config_tables():
|
||||||
|
pass
|
||||||
|
nico@nsg-System:~/master-thesis/netpfga/minip4/simple_sume_switch/test/sim_switch_default$
|
||||||
|
|
||||||
|
#+END_CENTER
|
||||||
|
*** DONE 2019-07-23: check: switch_calc compiles
|
||||||
|
CLOSED: [2019-07-23 Tue 08:59]
|
||||||
|
*** TODO 2019-07-23: merge/migrate code into switch calc until it breaks
|
||||||
|
*** the config writes madness
|
||||||
|
- step9 (sume simulation, the longest step) in the process calls
|
||||||
|
"config_writes.py"
|
||||||
|
- config_writes.py fails with a syntax error, as it is incomplete
|
||||||
|
python code
|
||||||
|
- config_writes.py and config_writes.sh are generated by
|
||||||
|
gen_config_writes.py
|
||||||
|
- gen_config_writes.py reads config_writes.txt
|
||||||
|
- config_writes.txt is created in step 5 (sdnet simulation)
|
||||||
|
- step 5 consists of running xsc, xelab and xsim
|
||||||
|
- xsim (re-)generates config_writes.txt according to a watch ls -l
|
||||||
|
on the file: ${XILINX_VIVADO}/bin/xsim --runall
|
||||||
|
SimpleSumeSwitch_tb#work.glbl
|
||||||
|
- it seems (by grep -r) that ./Testbench/SimpleSumeSwitch_tb.sv is
|
||||||
|
responsible for writing config_writes.txt
|
||||||
|
- It seems that the "task" "SV_write_control" inside that file is
|
||||||
|
responsible for writing the content, which in turn uses
|
||||||
|
axi4_lite_master_write_request_control
|
||||||
|
|
||||||
|
|
||||||
|
**** More notes for the config writes madness
|
||||||
|
xsc and xelab are described in
|
||||||
|
https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=2ahUKEwiGqfiAmcjjAhXEC-wKHW3_C78QFjABegQIBBAC&url=https%3A%2F%2Fwww.xilinx.com%2Fsupport%2Fdocumentation%2Fsw_manuals%2Fxilinx2014_4%2Fug900-vivado-logic-simulation.pdf&usg=AOvVaw1jgWuqcjeph5qOplb4eJMq
|
||||||
|
|
||||||
|
The xsc compiler helps create a shared library (.a on Windows or .so on Linux) from one
|
||||||
|
or more C files. You use xelab to bind the shared library generated by xsc into the rest of
|
||||||
|
your design. You can create a shared library using a one- or two-step process:
|
||||||
|
|
||||||
|
- the only file that matches the string "config_writes" in the
|
||||||
|
nf_sume_sdnet_ip/SimpleSumeSwitch subdirectory is
|
||||||
|
./Testbench/SimpleSumeSwitch_tb.sv
|
||||||
|
|
||||||
|
- code inside SimpleSumeSwitch_tb.sv:
|
||||||
|
|
||||||
|
#+BEGIN_CENTER
|
||||||
|
task SV_write_control(
|
||||||
|
input integer addr,
|
||||||
|
input integer data
|
||||||
|
);
|
||||||
|
int file;
|
||||||
|
file = $fopen("config_writes.txt", "a");
|
||||||
|
$display("SV_write_control()- start");
|
||||||
|
$fwrite(file, "<addr, data>: (%h, %h)\n", addr, data);
|
||||||
|
axi4_lite_master_write_request_control(addr,data);
|
||||||
|
$display("SV_write_control()- done");
|
||||||
|
$fclose(file);
|
||||||
|
endtask
|
||||||
|
|
||||||
|
#+END_CENTER
|
||||||
|
|
||||||
*** TODO Further notes P4/master thesis
|
*** TODO Further notes P4/master thesis
|
||||||
- Cannot easily run P4 on notebook - changes to the system very
|
- Cannot easily run P4 on notebook - changes to the system very
|
||||||
|
@ -6094,6 +6168,11 @@ control_sub_m02_data_fifo_0_synth_1: /home/nico/projects/P4-NetFPGA/contrib-proj
|
||||||
nico@nsg-System:~/master-thesis/netpfga/minip4/testdata$ less /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/project/simple_sume_switch.runs/control_sub_m02_data_fifo_0_synth_1/runme.log
|
nico@nsg-System:~/master-thesis/netpfga/minip4/testdata$ less /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/project/simple_sume_switch.runs/control_sub_m02_data_fifo_0_synth_1/runme.log
|
||||||
/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/project/simple_sume_switch.runs/control_sub_m02_data_fifo_0_synth_1/runme.log: No such file or directory
|
/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/project/simple_sume_switch.runs/control_sub_m02_data_fifo_0_synth_1/runme.log: No such file or directory
|
||||||
|
|
||||||
|
- Wrong warnings: using 2018.2, getting warnings about things
|
||||||
|
removed in 2015.3
|
||||||
|
WARNING: command 'get_user_parameter' will be removed in the 2015.3
|
||||||
|
release, use 'get_user_parameters' instead
|
||||||
|
|
||||||
- A script/makefile generates a python script that generates a shell
|
- A script/makefile generates a python script that generates a shell
|
||||||
script and later then a python script. If there is a mistake in
|
script and later then a python script. If there is a mistake in
|
||||||
generating the first python script (syntax ok, but content is
|
generating the first python script (syntax ok, but content is
|
||||||
|
|
|
@ -6,17 +6,21 @@ set -x
|
||||||
echo "First source all variables and THEN run this script"
|
echo "First source all variables and THEN run this script"
|
||||||
read something
|
read something
|
||||||
|
|
||||||
|
LOG=~/master-thesis/netpfga/log/compile-$(date +%F-%H%M%S)
|
||||||
|
exec > "$LOG"
|
||||||
|
exec 2>&1
|
||||||
|
|
||||||
# Step 1..3: create code
|
# Step 1..3: create code
|
||||||
# Step 4:
|
# Step 4:
|
||||||
date
|
date
|
||||||
cd $P4_PROJECT_DIR && make
|
cd $P4_PROJECT_DIR && make
|
||||||
|
|
||||||
# Step 5
|
# Step 5: sdnet simulation
|
||||||
date
|
date
|
||||||
cd $P4_PROJECT_DIR/nf_sume_sdnet_ip/SimpleSumeSwitch && ./vivado_sim.bash 2>&1 | tee LOG
|
cd $P4_PROJECT_DIR/nf_sume_sdnet_ip/SimpleSumeSwitch && ./vivado_sim.bash
|
||||||
|
|
||||||
expected_line=$(grep ^expected LOG | sed -e 's/.*= <//' -e 's/.*= (//')
|
expected_line=$(grep ^expected "$LOG" | sed -e 's/.*= <//' -e 's/.*= (//')
|
||||||
actual_line=$(grep ^actual LOG | sed -e 's/.*= <//' -e 's/.*= (//')
|
actual_line=$(grep ^actual "$LOG" | sed -e 's/.*= <//' -e 's/.*= (//')
|
||||||
|
|
||||||
# if [ -z "$expected_line" ]; then
|
# if [ -z "$expected_line" ]; then
|
||||||
# echo "Empty packet grep -- probably broken - aborting"
|
# echo "Empty packet grep -- probably broken - aborting"
|
||||||
|
@ -40,7 +44,9 @@ cd $P4_PROJECT_DIR && make uninstall_sdnet && make install_sdnet
|
||||||
date
|
date
|
||||||
cd $NF_DESIGN_DIR/test/sim_switch_default && make
|
cd $NF_DESIGN_DIR/test/sim_switch_default && make
|
||||||
|
|
||||||
# Step 9
|
# -------- FIX config_writes.py here: add " pass" or overwrite whole script
|
||||||
|
|
||||||
|
# Step 9: Run the SUME simulation
|
||||||
date
|
date
|
||||||
cd $SUME_FOLDER && ./tools/scripts/nf_test.py sim --major switch --minor default
|
cd $SUME_FOLDER && ./tools/scripts/nf_test.py sim --major switch --minor default
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,8 @@ control MyDeparser(packet_out packet, in headers hdr) {
|
||||||
************** I N G R E S S P R O C E S S I N G *******************
|
************** I N G R E S S P R O C E S S I N G *******************
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
control MyIngress(inout headers hdr,
|
control MyIngress(
|
||||||
|
inout headers hdr,
|
||||||
inout metadata meta,
|
inout metadata meta,
|
||||||
inout standard_metadata_t standard_metadata) {
|
inout standard_metadata_t standard_metadata) {
|
||||||
|
|
||||||
|
|
|
@ -98,8 +98,8 @@ control TopPipe(inout Parsed_packet p,
|
||||||
}
|
}
|
||||||
size = 64;
|
size = 64;
|
||||||
// default_action = swap_eth_addresses; // test_mirror(): in gen_testdata.py
|
// default_action = swap_eth_addresses; // test_mirror(): in gen_testdata.py
|
||||||
// default_action = send_to_port1; // test_port1()
|
default_action = send_to_port1; // test_port1()
|
||||||
default_action = send_to_all_ports; // test_allports():
|
// default_action = send_to_all_ports; // test_allports():
|
||||||
}
|
}
|
||||||
|
|
||||||
apply {
|
apply {
|
||||||
|
|
|
@ -53,6 +53,7 @@ parser TopParser(packet_in packet,
|
||||||
inout sume_metadata_t standard_metadata) {
|
inout sume_metadata_t standard_metadata) {
|
||||||
|
|
||||||
#include "parsers.p4"
|
#include "parsers.p4"
|
||||||
|
digest_data.unused = 0; /* avoid compiler warning */
|
||||||
}
|
}
|
||||||
|
|
||||||
/********************************************************************************
|
/********************************************************************************
|
||||||
|
@ -65,6 +66,8 @@ control TopPipe(inout headers hdr,
|
||||||
|
|
||||||
#include "netpfga.p4"
|
#include "netpfga.p4"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
apply {
|
apply {
|
||||||
dummy_table_for_netpfga.apply();
|
dummy_table_for_netpfga.apply();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
minip4_solution-nat64.p4
|
minip4_solution-mirror.p4
|
Loading…
Reference in a new issue