aboutsummaryrefslogtreecommitdiffstats
path: root/techlibs/xilinx/abc9_unmap.v
blob: 5604ceb0a5dcd83da651bcfe5ecead9585c27ba0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/*
 *  yosys -- Yosys Open SYnthesis Suite
 *
 *  Copyright (C) 2012  Clifford Wolf <clifford@clifford.at>
 *                2019  Eddie Hung    <eddie@fpgeh.com>
 *
 *  Permission to use, copy, modify, and/or distribute this software for any
 *  purpose with or without fee is hereby granted, provided that the above
 *  copyright notice and this permission notice appear in all copies.
 *
 *  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 *  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 *  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 *  ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 *  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 *  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 *  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 *
 */

// ============================================================================

(* techmap_celltype = "$__ABC9_ASYNC0 $__ABC9_ASYNC1" *)
module $__ABC9_ASYNC01(input A, S, output Y);
  assign Y = A;
endmodule

module $__ABC9_FF_(input D, output Q);
  assign Q = D;
endmodule

module $__ABC9_RAM6(input A, input [5:0] S, output Y);
  assign Y = A;
endmodule
module $__ABC9_RAM7(input A, input [6:0] S, output Y);
  assign Y = A;
endmodule

module $__ABC9_DSP48E1(
    input [29:0] $A,
    input [17:0] $B,
    input [47:0] $C,
    input [24:0] $D,
    input [47:0] $P,
    input [47:0] $PCIN,
    input [47:0] $PCOUT,
    output [47:0] P,
    output [47:0] PCOUT
);
    parameter integer ADREG = 1;
    parameter integer AREG = 1;
    parameter integer BREG = 1;
    parameter integer CREG = 1;
    parameter integer DREG = 1;
    parameter integer MREG = 1;
    parameter integer PREG = 1;
    parameter USE_DPORT = "FALSE";
    parameter USE_MULT = "MULTIPLY";

    assign P = $P, PCOUT = $PCOUT;
endmodule
parameter. */ }; /** * @brief Virtual timers list header. * @note The delta list is implemented as a double link bidirectional list * in order to make the unlink time constant, the reset of a virtual * timer is often used in the code. */ typedef struct { VirtualTimer *vt_next; /**< @brief Next timer in the delta list. */ VirtualTimer *vt_prev; /**< @brief Last timer in the delta list. */ systime_t vt_time; /**< @brief Must be initialized to -1. */ volatile systime_t vt_systime; /**< @brief System Time counter. */ } VTList; extern VTList vtlist; /** * @brief Virtual timers ticker. * * @iclass */ #define chVTDoTickI() { \ vtlist.vt_systime++; \ if (&vtlist != (VTList *)vtlist.vt_next) { \ VirtualTimer *vtp; \ \ --vtlist.vt_next->vt_time; \ while (!(vtp = vtlist.vt_next)->vt_time) { \ vtfunc_t fn = vtp->vt_func; \ vtp->vt_func = (vtfunc_t)NULL; \ vtp->vt_next->vt_prev = (void *)&vtlist; \ (&vtlist)->vt_next = vtp->vt_next; \ fn(vtp->vt_par); \ } \ } \ } /* * Virtual Timers APIs. */ #ifdef __cplusplus extern "C" { #endif void vt_init(void); void chVTSetI(VirtualTimer *vtp, systime_t time, vtfunc_t vtfunc, void *par); void chVTResetI(VirtualTimer *vtp); bool_t chTimeIsWithin(systime_t start, systime_t end); #ifdef __cplusplus } #endif /** * @brief Returns TRUE if the speciified timer is armed. * * @iclass */ #define chVTIsArmedI(vtp) ((vtp)->vt_func != NULL) /** * @brief Current system time. * @details Returns the number of system ticks since the @p chSysInit() * invocation. * @note The counter can reach its maximum and then restart from zero. * @note This function is designed to work with the @p chThdSleepUntil(). * * @return The system time in ticks.r * * @api */ #define chTimeNow() (vtlist.vt_systime) #endif /* _CHVT_H_ */ /** @} */