Exemplo n.º 1
0
void i_edge		( int x1, int y1, int x2, int y2)
{
    int dx	= _abs(x2 - x1);
    int dy	= _abs(y2 - y1);

    int sx = x2 >= x1 ? 1 : -1;
    int sy = y2 >= y1 ? 1 : -1;
	
    if ( dy <= dx ){
        int d  = ( dy << 1 ) - dx;
        int d1 = dy << 1;
        int d2 = ( dy - dx ) << 1;
		
		i_test(x1,y1);
        for  (int x = x1 + sx, y = y1, i = 1; i <= dx; i++, x += sx){
            if ( d > 0) { d += d2; y += sy; }
			else        d += d1;
			i_test(x,y);
        }
    }else{
        int d  = ( dx << 1 ) - dy;
        int d1 = dx << 1;
        int d2 = ( dx - dy ) << 1;
		
		i_test(x1,y1);
        for  (int x = x1, y = y1 + sy, i = 1; i <= dy; i++, y += sy ){
            if ( d > 0) { d += d2; x += sx; }
            else        d += d1;
			i_test(x,y);
        }
    }
}
int sc_main(int argc, char *argv[]) {

	sc_set_time_resolution(1.0, SC_NS);

	sc_clock clk("clock", 20.84, SC_NS);
	sc_signal<bool>	rst;
	sc_signal<bool> data_out_wr, oe_wr;
	sc_signal<sc_uint<8>> data_out, oe, data_in;
	sc_signal_rv<8> pins;

	gpio				i_gpio("GPIO");
	test_gpio			i_test("TEST");

	i_gpio.clk(clk);
	i_gpio.rst(rst);

	i_test.clk(clk);
	i_test.rst(rst);

	i_test.data_out(data_out);
	i_test.data_out_wr(data_out_wr);
	i_test.oe(oe);
	i_test.oe_wr(oe_wr);
	i_test.data_in(data_in);
	i_test.pin(pins);

	i_gpio.data_out(data_out);
	i_gpio.data_out_wr(data_out_wr);
	i_gpio.oe(oe);
	i_gpio.oe_wr(oe_wr);
	i_gpio.data_in(data_in);
	i_gpio.pin(pins);

#ifdef VCD_OUTPUT_ENABLE
	sc_trace_file *vcd_log = sc_create_vcd_trace_file("TEST_GPIO");
	sc_trace(vcd_log, clk, "Clk");
	sc_trace(vcd_log, rst, "Reset_n");
	sc_trace(vcd_log, pins, "Pins");
#endif

	srand((unsigned int)(time(NULL) & 0xffffffff));
	sc_start();

#ifdef VCD_OUTPUT_ENABLE
	sc_close_vcd_trace_file(vcd_log);
#endif

	return i_test.error_cnt;
}
int sc_main(int argc, char *argv[]) {

	sc_set_time_resolution(1.0, SC_NS);
	sc_signal<bool>	rx_dp, rx_dn, tx_dp, tx_dn;
	sc_signal<bool> uart_txd, uart_rxd;
	sc_signal<bool> tx_oe_nc;

	ft232r			i_ft232r("FT232R");
	test_ft232r		i_test("TEST");

	i_ft232r.tx_dp(tx_dp);
	i_ft232r.tx_dn(tx_dn);
	i_ft232r.tx_oe(tx_oe_nc);
	i_ft232r.rx_dp(rx_dp);
	i_ft232r.rx_dn(rx_dn);
	i_ft232r.rx_d(rx_dp);
	i_ft232r.uart_txd(uart_txd);
	i_ft232r.uart_rxd(uart_rxd);

	i_test.txdp(rx_dp);
	i_test.txdn(rx_dn);
	i_test.rxdp(tx_dp);
	i_test.rxdn(tx_dn);
	i_test.uart_txd(uart_rxd);
	i_test.uart_rxd(uart_txd);

#ifdef VCD_OUTPUT_ENABLE
	sc_trace_file *vcd_log = sc_create_vcd_trace_file("TEST_FT232R");
	sc_trace(vcd_log, uart_txd, "UART_TXD");
	sc_trace(vcd_log, uart_rxd, "UART_RXD");

	sc_trace(vcd_log, tx_dp, "USB_TXDP");
	sc_trace(vcd_log, tx_dn, "USB_TXDN");
	sc_trace(vcd_log, rx_dp, "USB_RXDP");
	sc_trace(vcd_log, rx_dn, "USB_RXDN");
#endif

	srand((unsigned int)(time(NULL) & 0xffffffff));
	sc_start();

#ifdef VCD_OUTPUT_ENABLE
	sc_close_vcd_trace_file(vcd_log);
#endif

	return i_test.error_cnt;
}
int sc_main(int argc, char *argv[]) {

	sc_set_time_resolution(1.0, SC_NS);

	sc_clock clk("clock", 20.84, SC_NS);
	sc_signal<bool>	rst;

	sc_signal<bool>	txd, rxd;
	sc_signal<bool>   tx_data_wr;
	sc_signal<sc_uint<8>> tx_data;
	sc_signal<bool>  tx_empty;

	sc_signal<bool>   rx_data_rd;
	sc_signal<sc_uint<8>> rx_data;
	sc_signal<bool>  rx_avail;

	uart			i_uart("UART");
	test_uart			i_test("TEST");

	i_uart.clk(clk);
	i_uart.rst(rst);
	i_uart.txd(txd);
	i_uart.rxd(rxd);
	i_uart.tx_data_wr(tx_data_wr);
	i_uart.tx_data(tx_data);
	i_uart.tx_empty(tx_empty);
	i_uart.rx_data_rd(rx_data_rd);
	i_uart.rx_data(rx_data);
	i_uart.rx_avail(rx_avail);

	i_test.clk(clk);
	i_test.rst(rst);
	i_test.txd(rxd);	
	i_test.rxd(txd);	
	i_test.tx_data_wr(tx_data_wr);
	i_test.tx_data(tx_data);
	i_test.tx_empty(tx_empty);
	i_test.rx_data_rd(rx_data_rd);
	i_test.rx_data(rx_data);
	i_test.rx_avail(rx_avail);

#ifdef VCD_OUTPUT_ENABLE
	sc_trace_file *vcd_log = sc_create_vcd_trace_file("TEST_UART");
	sc_trace(vcd_log, clk, "Clk");
	sc_trace(vcd_log, rst, "Reset_n");
	sc_trace(vcd_log, txd, "TXD");
	sc_trace(vcd_log, rxd, "RXD");

	sc_trace(vcd_log, tx_data_wr, "tx_data_wr");
	sc_trace(vcd_log, tx_data, "tx_data");
	sc_trace(vcd_log, tx_empty, "tx_empty");

	sc_trace(vcd_log, rx_data_rd, "rx_data_rd");
	sc_trace(vcd_log, rx_data, "rx_data");
	sc_trace(vcd_log, rx_avail, "rx_avail");
#endif

	srand((unsigned int)(time(NULL) & 0xffffffff));
	sc_start();

#ifdef VCD_OUTPUT_ENABLE
	sc_close_vcd_trace_file(vcd_log);
#endif

	return i_test.error_cnt;
}