// auto-generated by timings.py from ../icefuzz/timings_*.txt
#include <string>
#include <stdio.h>
#include <stdlib.h>

double get_delay_hx8k(std::string cell_type, std::string in_port, std::string out_port)
{
  if (cell_type == "CascadeBuf") {
    if (in_port == "I" && out_port == "O") return 0.18235;
  }
  if (cell_type == "CascadeMux") {
    if (in_port == "I" && out_port == "O") return 0.00000;
  }
  if (cell_type == "CEMux") {
    if (in_port == "I" && out_port == "O") return 0.60316;
  }
  if (cell_type == "ClkMux") {
    if (in_port == "I" && out_port == "O") return 0.30859;
  }
  if (cell_type == "gio2CtrlBuf") {
    if (in_port == "I" && out_port == "O") return 0.00000;
  }
  if (cell_type == "Glb2LocalMux") {
    if (in_port == "I" && out_port == "O") return 0.44886;
  }
  if (cell_type == "GlobalMux") {
    if (in_port == "I" && out_port == "O") return 0.15430;
  }
  if (cell_type == "ICE_CARRY_IN_MUX") {
    if (in_port == "carryinitin" && out_port == "carryinitout") return 0.19638;
  }
  if (cell_type == "ICE_GB") {
    if (in_port == "USERSIGNALTOGLOBALBUFFER" && out_port == "GLOBALBUFFEROUTPUT") return 0.61718;
  }
  if (cell_type == "InMux") {
    if (in_port == "I" && out_port == "O") return 0.25950;
  }
  if (cell_type == "INV") {
    if (in_port == "I" && out_port == "O") return 0.00000;
  }
  if (cell_type == "IO_PAD") {
    if (in_port == "DIN" && out_port == "PACKAGEPIN") return 2.35320;
    if (in_port == "OE" && out_port == "PACKAGEPIN") return 1.99000;
    if (in_port == "OE" && out_port == "PACKAGEPIN") return 1.97300;
    if (in_port == "OE" && out_port == "PACKAGEPIN") return 2.35320;
    if (in_port == "PACKAGEPIN" && out_port == "DOUT") return 0.59000;
  }
  if (cell_type == "IoInMux") {
    if (in_port == "I" && out_port == "O") return 0.25950;
  }
  if (cell_type == "IoSpan4Mux") {
    if (in_port == "I" && out_port == "O") return 0.32262;
  }
  if (cell_type == "LocalMux") {
    if (in_port == "I" && out_port == "O") return 0.32963;
  }
  if (cell_type == "LogicCell40") {
    if (in_port == "ce" && out_port == "*setup*") return 0.00000;
    if (in_port == "in0" && out_port == "*setup*") return 0.39977;
    if (in_port == "in1" && out_port == "*setup*") return 0.37873;
    if (in_port == "in2" && out_port == "*setup*") return 0.32262;
    if (in_port == "in3" && out_port == "*setup*") return 0.21742;
    if (in_port == "sr" && out_port == "*setup*") return 0.14027;
    if (in_port == "ce" && out_port == "*setup*") return 0.00000;
    if (in_port == "in0" && out_port == "*setup*") return 0.46990;
    if (in_port == "in1" && out_port == "*setup*") return 0.39977;
    if (in_port == "in2" && out_port == "*setup*") return 0.37171;
    if (in_port == "in3" && out_port == "*setup*") return 0.27352;
    if (in_port == "sr" && out_port == "*setup*") return 0.20339;
    if (in_port == "carryin" && out_port == "carryout") return 0.12624;
    if (in_port == "in0" && out_port == "lcout") return 0.44886;
    if (in_port == "in0" && out_port == "ltout") return 0.38574;
    if (in_port == "in1" && out_port == "carryout") return 0.25950;
    if (in_port == "in1" && out_port == "lcout") return 0.39977;
    if (in_port == "in1" && out_port == "ltout") return 0.37873;
    if (in_port == "in2" && out_port == "carryout") return 0.23144;
    if (in_port == "in2" && out_port == "lcout") return 0.37873;
    if (in_port == "in2" && out_port == "ltout") return 0.34366;
    if (in_port == "in3" && out_port == "lcout") return 0.31561;
    if (in_port == "in3" && out_port == "ltout") return 0.27352;
    if (in_port == "*clkedge*" && out_port == "lcout") return 0.54004;
    if (in_port == "sr" && out_port == "lcout") return 0.59919;
    if (in_port == "sr" && out_port == "lcout") return 0.59916;
  }
  if (cell_type == "Odrv4") {
    if (in_port == "I" && out_port == "O") return 0.37171;
  }
  if (cell_type == "Odrv12") {
    if (in_port == "I" && out_port == "O") return 0.54004;
  }
  if (cell_type == "PLL40") {
    if (in_port == "PLLIN" && out_port == "PLLOUTCORE") return 0.00000;
    if (in_port == "PLLIN" && out_port == "PLLOUTGLOBAL") return 0.00000;
  }
  if (cell_type == "PLL40_2") {
    if (in_port == "PLLIN" && out_port == "PLLOUTCOREA") return 0.00000;
    if (in_port == "PLLIN" && out_port == "PLLOUTCOREB") return 0.00000;
    if (in_port == "PLLIN" && out_port == "PLLOUTGLOBALA") return 0.00000;
    if (in_port == "PLLIN" && out_port == "PLLOUTGLOBALB") return 0.00000;
  }
  if (cell_type == "PLL40_2F") {
    if (in_port == "PLLIN" && out_port == "PLLOUTCOREA") return 0.00000;
    if (in_port == "PLLIN" && out_port == "PLLOUTCOREB") return 0.00000;
    if (in_port == "PLLIN" && out_port == "PLLOUTGLOBALA") return 0.00000;
    if (in_port == "PLLIN" && out_port == "PLLOUTGLOBALB") return 0.00000;
  }
  if (cell_type == "PRE_IO") {
    if (in_port == "CLOCKENABLE" && out_port == "*setup*") return 0.07013;
    if (in_port == "CLOCKENABLE" && out_port == "*setup*") return 0.07013;
    if (in_port == "DOUT0" && out_port == "*setup*") return 0.07013;
    if (in_port == "DOUT1" && out_port == "*setup*") return 0.07013;
    if (in_port == "OUTPUTENABLE" && out_port == "*setup*") return 0.07013;
    if (in_port == "PADIN" && out_port == "*setup*") return 1.88536;
    if (in_port == "PADIN" && out_port == "*setup*") return 1.88536;
    if (in_port == "CLOCKENABLE" && out_port == "*setup*") return 0.07715;
    if (in_port == "CLOCKENABLE" && out_port == "*setup*") return 0.07715;
    if (in_port == "DOUT0" && out_port == "*setup*") return 0.07715;
    if (in_port == "DOUT1" && out_port == "*setup*") return 0.07715;
    if (in_port == "OUTPUTENABLE" && out_port == "*setup*") return 0.07715;
    if (in_port == "PADIN" && out_port == "*setup*") return 1.89237;
    if (in_port == "PADIN" && out_port == "*setup*") return 1.89237;
    if (in_port == "DOUT0" && out_port == "PADOUT") return 2.23729;
    if (in_port == "LATCHINPUTVALUE" && out_port == "DIN0") return 0.37171;
    if (in_port == "*clkedge*" && out_port == "DIN1") return 0.14027;
    if (in_port == "*clkedge*" && out_port == "PADOUT") return 0.14027;
    if (in_port == "OUTPUTENABLE" && out_port == "PADOEN") return 0.21040;
    if (in_port == "PADIN" && out_port == "DIN0") return 0.61718;
    if (in_port == "*clkedge*" && out_port == "DIN0") return 0.14027;
    if (in_port == "*clkedge*" && out_port == "PADOEN") return 0.14027;
    if (in_port == "*clkedge*" && out_port == "PADOUT") return 0.14027;
  }
  if (cell_type == "PRE_IO_GBUF") {
    if (in_port == "PADSIGNALTOGLOBALBUFFER" && out_port == "GLOBALBUFFEROUTPUT") return 1.86228;
  }
  if (cell_type == "SB_PLL40_2F_CORE") {
    if (in_port == "REFERENCECLK" && out_port == "PLLOUTCOREA") return 0.00000;
    if (in_port == "REFERENCECLK" && out_port == "PLLOUTCOREB") return 0.00000;
    if (in_port == "REFERENCECLK" && out_port == "PLLOUTGLOBALA") return 0.00000;
    if (in_port == "REFERENCECLK" && out_port == "PLLOUTGLOBALB") return 0.00000;
  }
  if (cell_type == "SB_PLL40_CORE") {
    if (in_port == "REFERENCECLK" && out_port == "PLLOUTCORE") return 0.00000;
    if (in_port == "REFERENCECLK" && out_port == "PLLOUTGLOBAL") return 0.00000;
  }
  if (cell_type == "SB_RAM40_4K") {
    if (in_port == "MASK[0]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[1]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[2]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[3]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[4]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[5]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[6]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[7]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[8]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[9]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[10]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[11]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[12]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[13]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[14]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[15]" && out_port == "*setup*") return 0.27352;
    if (in_port == "RADDR[0]" && out_port == "*setup*") return 0.20339;
    if (in_port == "RADDR[1]" && out_port == "*setup*") return 0.20339;
    if (in_port == "RADDR[2]" && out_port == "*setup*") return 0.20339;
    if (in_port == "RADDR[3]" && out_port == "*setup*") return 0.20339;
    if (in_port == "RADDR[4]" && out_port == "*setup*") return 0.20339;
    if (in_port == "RADDR[5]" && out_port == "*setup*") return 0.20339;
    if (in_port == "RADDR[6]" && out_port == "*setup*") return 0.20339;
    if (in_port == "RADDR[7]" && out_port == "*setup*") return 0.20339;
    if (in_port == "RADDR[8]" && out_port == "*setup*") return 0.20339;
    if (in_port == "RADDR[9]" && out_port == "*setup*") return 0.20339;
    if (in_port == "RADDR[10]" && out_port == "*setup*") return 0.20339;
    if (in_port == "RCLKE" && out_port == "*setup*") return 0.26651;
    if (in_port == "RE" && out_port == "*setup*") return 0.09819;
    if (in_port == "WADDR[0]" && out_port == "*setup*") return 0.22443;
    if (in_port == "WADDR[1]" && out_port == "*setup*") return 0.22443;
    if (in_port == "WADDR[2]" && out_port == "*setup*") return 0.22443;
    if (in_port == "WADDR[3]" && out_port == "*setup*") return 0.22443;
    if (in_port == "WADDR[4]" && out_port == "*setup*") return 0.22443;
    if (in_port == "WADDR[5]" && out_port == "*setup*") return 0.22443;
    if (in_port == "WADDR[6]" && out_port == "*setup*") return 0.22443;
    if (in_port == "WADDR[7]" && out_port == "*setup*") return 0.22443;
    if (in_port == "WADDR[8]" && out_port == "*setup*") return 0.22443;
    if (in_port == "WADDR[9]" && out_port == "*setup*") return 0.22443;
    if (in_port == "WADDR[10]" && out_port == "*setup*") return 0.22443;
    if (in_port == "WCLKE" && out_port == "*setup*") return 0.26651;
    if (in_port == "WDATA[0]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[1]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[2]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[3]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[4]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[5]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[6]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[7]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[8]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[9]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[10]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[11]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[12]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[13]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[14]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[15]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WE" && out_port == "*setup*") return 0.13326;
    if (in_port == "MASK[0]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[1]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[2]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[3]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[4]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[5]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[6]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[7]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[8]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[9]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[10]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[11]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[12]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[13]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[14]" && out_port == "*setup*") return 0.27352;
    if (in_port == "MASK[15]" && out_port == "*setup*") return 0.27352;
    if (in_port == "RADDR[0]" && out_port == "*setup*") return 0.20339;
    if (in_port == "RADDR[1]" && out_port == "*setup*") return 0.20339;
    if (in_port == "RADDR[2]" && out_port == "*setup*") return 0.20339;
    if (in_port == "RADDR[3]" && out_port == "*setup*") return 0.20339;
    if (in_port == "RADDR[4]" && out_port == "*setup*") return 0.20339;
    if (in_port == "RADDR[5]" && out_port == "*setup*") return 0.20339;
    if (in_port == "RADDR[6]" && out_port == "*setup*") return 0.20339;
    if (in_port == "RADDR[7]" && out_port == "*setup*") return 0.20339;
    if (in_port == "RADDR[8]" && out_port == "*setup*") return 0.20339;
    if (in_port == "RADDR[9]" && out_port == "*setup*") return 0.20339;
    if (in_port == "RADDR[10]" && out_port == "*setup*") return 0.20339;
    if (in_port == "RCLKE" && out_port == "*setup*") return 0.26651;
    if (in_port == "RE" && out_port == "*setup*") return 0.09819;
    if (in_port == "WADDR[0]" && out_port == "*setup*") return 0.22443;
    if (in_port == "WADDR[1]" && out_port == "*setup*") return 0.22443;
    if (in_port == "WADDR[2]" && out_port == "*setup*") return 0.22443;
    if (in_port == "WADDR[3]" && out_port == "*setup*") return 0.22443;
    if (in_port == "WADDR[4]" && out_port == "*setup*") return 0.22443;
    if (in_port == "WADDR[5]" && out_port == "*setup*") return 0.22443;
    if (in_port == "WADDR[6]" && out_port == "*setup*") return 0.22443;
    if (in_port == "WADDR[7]" && out_port == "*setup*") return 0.22443;
    if (in_port == "WADDR[8]" && out_port == "*setup*") return 0.22443;
    if (in_port == "WADDR[9]" && out_port == "*setup*") return 0.22443;
    if (in_port == "WADDR[10]" && out_port == "*setup*") return 0.22443;
    if (in_port == "WCLKE" && out_port == "*setup*") return 0.26651;
    if (in_port == "WDATA[0]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[1]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[2]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[3]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[4]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[5]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[6]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[7]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[8]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[9]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[10]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[11]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[12]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[13]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[14]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WDATA[15]" && out_port == "*setup*") return 0.16131;
    if (in_port == "WE" && out_port == "*setup*") return 0.13326;
    if (in_port == "*clkedge*" && out_port == "RDATA[0]") return 2.14612;
    if (in_port == "*clkedge*" && out_port == "RDATA[1]") return 2.14612;
    if (in_port == "*clkedge*" && out_port == "RDATA[2]") return 2.14612;
    if (in_port == "*clkedge*" && out_port == "RDATA[3]") return 2.14612;
    if (in_port == "*clkedge*" && out_port == "RDATA[4]") return 2.14612;
    if (in_port == "*clkedge*" && out_port == "RDATA[5]") return 2.14612;
    if (in_port == "*clkedge*" && out_port == "RDATA[6]") return 2.14612;
    if (in_port == "*clkedge*" && out_port == "RDATA[7]") return 2.14612;
    if (in_port == "*clkedge*" && out_port == "RDATA[8]") return 2.14612;
    if (in_port == "*clkedge*" && out_port == "RDATA[9]") return 2.14612;
    if (in_port == "*clkedge*" && out_port == "RDATA[10]") return 2.14612;
    if (in_port == "*clkedge*" && out_port == "RDATA[11]") return 2.14612;
    if (in_port == "*clkedge*" && out_port == "RDATA[12]") return 2.14612;
    if (in_port == "*clkedge*" && out_port == "RDATA[13]") return 2.14612;
    if (in_port == "*clkedge*" && out_port == "RDATA[14]") return 2.14612;
    if (in_port == "*clkedge*" && out_port == "RDATA[15]") return 2.14612;
  }
  if (cell_type == "Sp12to4") {
    if (in_port == "I" && out_port == "O") return 0.44886;
  }
  if (cell_type == "Span4Mux_h0") {
    if (in_port == "I" && out_port == "O") return 0.14728;
  }
  if (cell_type == "Span4Mux_h1") {
    if (in_port == "I" && out_port == "O") return 0.17534;
  }
  if (cell_type == "Span4Mux_h2") {
    if (in_port == "I" && out_port == "O") return 0.20339;
  }
  if (cell_type == "Span4Mux_h3") {
    if (in_port == "I" && out_port == "O") return 0.23144;
  }
  if (cell_type == "Span4Mux_h4") {
    if (in_port == "I" && out_port == "O") return 0.31561;
  }
  if (cell_type == "Span4Mux_v0") {
    if (in_port == "I" && out_port == "O") return 0.20339;
  }
  if (cell_type == "Span4Mux_v1") {
    if (in_port == "I" && out_port == "O") return 0.20339;
  }
  if (cell_type == "Span4Mux_v2") {
    if (in_port == "I" && out_port == "O") return 0.25248;
  }
  if (cell_type == "Span4Mux_v3") {
    if (in_port == "I" && out_port == "O") return 0.33665;
  }
  if (cell_type == "Span4Mux_v4") {
    if (in_port == "I" && out_port == "O") return 0.37171;
  }
  if (cell_type == "Span12Mux_h0") {
    if (in_port == "I" && out_port == "O") return 0.14728;
  }
  if (cell_type == "Span12Mux_h1") {
    if (in_port == "I" && out_port == "O") return 0.13326;
  }
  if (cell_type == "Span12Mux_h2") {
    if (in_port == "I" && out_port == "O") return 0.16832;
  }
  if (cell_type == "Span12Mux_h3") {
    if (in_port == "I" && out_port == "O") return 0.18235;
  }
  if (cell_type == "Span12Mux_h4") {
    if (in_port == "I" && out_port == "O") return 0.21742;
  }
  if (cell_type == "Span12Mux_h5") {
    if (in_port == "I" && out_port == "O") return 0.25950;
  }
  if (cell_type == "Span12Mux_h6") {
    if (in_port == "I" && out_port == "O") return 0.28054;
  }
  if (cell_type == "Span12Mux_h7") {
    if (in_port == "I" && out_port == "O") return 0.32262;
  }
  if (cell_type == "Span12Mux_h8") {
    if (in_port == "I" && out_port == "O") return 0.38574;
  }
  if (cell_type == "Span12Mux_h9") {
    if (in_port == "I" && out_port == "O") return 0.43483;
  }
  if (cell_type == "Span12Mux_h10") {
    if (in_port == "I" && out_port == "O") return 0.46990;
  }
  if (cell_type == "Span12Mux_h11") {
    if (in_port == "I" && out_port == "O") return 0.52601;
  }
  if (cell_type == "Span12Mux_h12") {
    if (in_port == "I" && out_port == "O") return 0.54004;
  }
  if (cell_type == "Span12Mux_v0") {
    if (in_port == "I" && out_port == "O") return 0.10520;
  }
  if (cell_type == "Span12Mux_v1") {
    if (in_port == "I" && out_port == "O") return 0.10520;
  }
  if (cell_type == "Span12Mux_v2") {
    if (in_port == "I" && out_port == "O") return 0.15430;
  }
  if (cell_type == "Span12Mux_v3") {
    if (in_port == "I" && out_port == "O") return 0.16832;
  }
  if (cell_type == "Span12Mux_v4") {
    if (in_port == "I" && out_port == "O") return 0.21040;
  }
  if (cell_type == "Span12Mux_v5") {
    if (in_port == "I" && out_port == "O") return 0.26651;
  }
  if (cell_type == "Span12Mux_v6") {
    if (in_port == "I" && out_port == "O") return 0.28755;
  }
  if (cell_type == "Span12Mux_v7") {
    if (in_port == "I" && out_port == "O") return 0.31561;
  }
  if (cell_type == "Span12Mux_v8") {
    if (in_port == "I" && out_port == "O") return 0.39275;
  }
  if (cell_type == "Span12Mux_v9") {
    if (in_port == "I" && out_port == "O") return 0.42081;
  }
  if (cell_type == "Span12Mux_v10") {
    if (in_port == "I" && out_port == "O") return 0.43483;
  }
  if (cell_type == "Span12Mux_v11") {
    if (in_port == "I" && out_port == "O") return 0.45587;
  }
  if (cell_type == "Span12Mux_v12") {
    if (in_port == "I" && out_port == "O") return 0.54004;
  }
  if (cell_type == "SRMux") {
    if (in_port == "I" && out_port == "O") return 0.46289;
  }
  if (in_port == "*clkedge*"|| out_port == "*setup*") return 0;
  fprintf(stderr, "Unable to resolve delay for path %s -> %s in cell type %s!\n", in_port.c_str(), out_port.c_str(), cell_type.c_str());
  exit(1);
}
