ttl-fpga/sw/kousaten/src/main.c

52 lines
1.3 KiB
C
Raw Normal View History

2019-06-16 17:11:20 +02:00
#include <stdio.h>
2019-06-16 21:27:42 +02:00
#include "fpga_cell.h"
#include "fpga_fdef_loader.h"
#include "fpga_global.h"
2019-06-18 20:15:35 +02:00
#include "fpga.h"
#define E_FDEF 1
#define E_BITSTREAM 2
2019-06-16 17:11:20 +02:00
2019-06-16 21:27:42 +02:00
int development_test_main(int argc, char *argv[])
2019-06-16 17:11:20 +02:00
{
2019-06-16 21:27:42 +02:00
struct fpga_cell *entry_cell;
2019-06-20 13:45:04 +02:00
struct fpga_chain *chain;
2019-06-16 21:27:42 +02:00
2019-06-20 13:45:04 +02:00
char *fdef_filename = "fdef/4x4.fdef";
char *bitstream_filename = "-";
2019-06-19 18:32:59 +02:00
2019-06-20 13:45:04 +02:00
set_log_level(LL_DEBUG);
2019-06-16 21:27:42 +02:00
2019-06-20 13:45:04 +02:00
entry_cell = fpga_fdef_loader_load(fdef_filename);
2019-06-16 21:27:42 +02:00
if (!entry_cell) {
2019-06-18 20:15:35 +02:00
report(LL_CRITICAL, "Error loading FDEF.");
return E_FDEF;
2019-06-16 21:27:42 +02:00
}
report(LL_INFO, "FDEF loaded.");
2019-06-20 13:45:04 +02:00
chain = fpga_isp_chain_new(entry_cell);
if (!chain) {
2019-06-18 20:15:35 +02:00
report(LL_CRITICAL, "Critical error during bitstream generation.");
return E_BITSTREAM;
}
2019-06-20 13:45:04 +02:00
report(LL_INFO, "Chain loaded.");
/* TODO: Configure application specific logic */
((struct fpga_cell_lut34 *)(entry_cell->cell_connections[RIGHT]))->lut_in_sel[0] = 'A';
2019-06-21 20:31:34 +02:00
((struct fpga_cell_lut34 *)(entry_cell->cell_connections[RIGHT]))->drive_sel[0] = 'C';
((struct fpga_cell_lut34 *)(entry_cell->cell_connections[RIGHT]))->LUT4 = 0;
2019-06-20 13:45:04 +02:00
if (fpga_generate_bitstream(chain, bitstream_filename)) {
report(LL_ERROR, "Bitstream generation failed.");
return E_BITSTREAM;
}
report(LL_INFO, "Generated bitstream.");
2019-06-18 20:15:35 +02:00
2019-06-16 17:11:20 +02:00
return 0;
}
2019-06-16 21:27:42 +02:00
int main(int argc, char *argv[])
{
return development_test_main(argc, argv);
}