后端面试

以下三个是最经常被问到的,基本上属于介绍性的题目,无所谓正确答案,在我看来,这些不算真正的问题。

Discuss about the projects worked in the previous company.

介绍一下你在公司里做过的项目

What are physical design flows, various activities you are involved?

介绍一下你们的后端流程(假设是从gate level netlist开始的),你负责哪一部分?

Designcomplexity, capacity, frequency, process technologies, block size you handled.

芯片的工艺,面积,standard cell 的gate count,FF的个数,memory macro的个数,时钟频率,时钟个数,是hierarchy还是flatten flow,

如果是flatten flow,分成几个block

下面是第一个真正的问题:

Whypowerstripes routed in the top metal layers?

为什么电源走线选用最上面的金属层?

难度:1

难度指数:

1:常识--无论是否有工作经验,都应该准确回答

2:简单--只要做过一点后端的设计,就应该明白

3:一般--有实际工作经验一年左右,做过2个以上真正的设计,应该可以答上来

4:较难--在这个特定的领域有较多的研究,并积累了一定的经验

5:很难--基本上是专家级的牛人了!

答案:

1)高金属层的IR比较小,EM能力大

2)底层被IP,标准单元用的机会更大


Why do you use alternate routing approach HVH/VHV (Horizontal-Vertical-Horizontal/ Vertical-Horizontal-Vertical)?

为什么要使用横竖交替的走线方式? (感觉这个问题比较弱智,但是号称是intel的面试问题,晕!我憧憬和向往的圣地啊!!!)

难度:1

答案:

最有效地利用走线资源


老是简单的问题比较无趣,问一个貌似简单,但是不容易回答完整的

How to fix x-talk violation?

如何解决线间干扰?

难度:4 (关于难度的定义,在第一题里面)

(应该至少有5大类解决办法,wire spacing, shielding, change layer之类的只算其中1类)

答案:

1)upsize victim net driver, downsize aggressor net driver

2)increase wire space, shielding, change layer,change wire width

3)insert butter in victim net

能答出以上3条的,在工作中已经基本够用,但是还有两个不常用到的,是AMD的一个大牛告诉我的。

4)把与victim net相连的输入端改成Hi-Vth的单元

5)改变信号的timing window。这个不易做到,但是也是解决方法


What are several factors to improve propagation delay of standard cell?

哪些因素可以影响标准单元的延迟?

难度:3

答案:

1) PVT

2)input transition, output load

3)Vth


What would you do in order to not use certain cells from the library?

如何禁止使用库里面的某些单元?

难度:1

答案:

set_dont_use

set_dont_touch


During the synthesis, what type of wire load model are often used?

做RTL综合时,经常使用的wire load model有哪几种?

难度:2

注意:问题是wire load model,不是wire load mode,也不是delay model

答案:

1)zero wire load model

2)基于fanout的传统 WLM

3)基于物理位置(距离)的wire load model,在Cadence的RC中叫PLE,Synopsys叫DC Ultra Topographical

附加问题:

What types of delay model are used in digital design? (数字IC设计中有多少种类型的delay model)

答案:

NLDM

CCS

ECSM

还有一个现在基本不用了的--LDM


How delays are characterized using WLM (Wire Load Model)?

使用一般的WLM (不是zero WLM,也不是按照物理位置算的DCT),DC是如何计算delay的?

难度:2

答案:

DC在计算延时的时候,net的rc就要根据所选取的wrie load model来计算,

计算时和输出的fanout决定

以smic13的smic13_wl10为例

wire_load("smic13_wl10") {

resistance: 8.5e-8;

capacitance: 1.5e-4;

area: 0.7;

slope: 66.667;

fanout_length(1,66.667);

根据fanout值,由fanout(1,66.667)可以得出互连线长度为66.667,然后根据resistance和capacitance计算出互连线电容为1.5e-4*66.667,互连线电阻为8.5e-8*66.667

,当然如果扇出值表中没有,就会用到slope,例如扇出为3时,此时估算的互连线长度为1*66.667+(3-1)*slope,再计算出RC值,然后DC由此计算net的延时。


There are source clock clka (create_clock), and generated clock clkb by clka.

In pre-CTS netlist, there is network latency in clka, how this latency propagates to clkb?

In post-CTS netlist, What you need to do for this network latency?

假设有两个时钟,原始为clka,生成的时钟为clkb,

在没有时钟树的网表中,clka的network latency会自动传递到clkb上吗?clkb的latency如何描述?

在生成时钟树的网表中,如何处理network latency? clkb的latency又如何描述?

难度:3

答案:

在pre-CTS时,clka的network latency会自动传到clkb上

在post-CTS时,可以把network latency去掉,通过set_propagated_clock命令,让工具根据clock tree去计算实际的clock network latency


There are source clock clka (create_clock), and generated clock clkb by clka. how do you specify them in CTS spec file? Assume there is real timing path between clka and clkb.

clkb是clka的生成时钟,在CTS的spec文件中如何定义这两个时钟?假设clka和clkb之间的FF有时序收敛的要求。

难度:3

答案:

在CTS的spec文件中定义 clka 是 root,clkb 为 through pin,再加上那些应该有的skew,transition,insertion delay等就好了,其它的事CTS会给你做


assume in pre-CTS SDC, clock uncertainty for setup contains pll jitter + clock tree skew. How do you set clock uncertainty for hold, and how to modify it to post-CTS sdc?

假设在pre-CTS的时序约束中,setup的clock uncertainty是由PLLjitter和clock tree skew两部分组成,那么

1)pre-CTS的时序约束中,hold的clock uncertainty是什么?

2)post-CTS的时序约束中,setup和hold的clock uncertainty要做什么样的修改?

难度:2

答案:

1) pre-CTS,

setup的clock uncertainty = PLL jitter + clock tree skew

hold的clock uncertainty = clock tree skew

2) post-CTS,

setup的clock uncertainty = PLL jitter

hold的clock uncertainty = 0


What are various techniques to resolve routing congestion?

请详细解释解决走线阻塞的问题

难度:4

提示:

1) routing congestion发生在后端,前端一般不太考虑这个问题,需要后端自己去想办法解决,但是解决的办法不只在后端,也有一些方法需要前端的配合

2) 阻塞有多种情形,要分别讨论,没有一个统一的解决办法。能够把大部分的阻塞情况列举出来,就已经够4级的水平啦

答案:

1)阻塞在RAM(macro)之间:可能RAM之间的距离没有计算正确,可以加大RAM之间的间距;扭转RAM的方向,使得RAM的IO pin朝向更容易走线的那边;如果是多个RAM共用地址或者数据线,尽量把RAM的地址数据pin对齐

2)阻塞出现在RAM和帮助单元交界的地方:在RAM周围加一条halo(keepout);把RAM放在四周,尽量把中间留下的空间变成方形;在有阻塞的地方加一些由小的placement blockage组成的矩阵

3)阻塞出现在标准单元的某一块:也可以加一些由小的placement blockage组成的矩阵;module/instance padding;利用placement guide减少那块地方的标准单元个数;scan chain reordering也会改善一些阻塞;定义density上限;使用congestion driven的placement,并且要求place之后做congestion优化;在综合是禁止使用那些pin太多太密集的标准单元(多半是那些复 杂的组合逻辑单元);请前端使用RAM代替触发器矩阵;请前端修改算法

4)应该尽量减少power route占有的资源,谨慎选择power mesh使用的金属层,VIA的大小等。在detail route完成之后,你如果已经试了各种解决signal congestion的方法,还有少量DRC无法解决时,可以考虑切掉部分power mesh


How do you get better skew/insertion delays in CTS (Clock Tree Synthesis)?

如何得到更好的时钟树skew和insertion delay

难度:4

答案:

clock mesh 是一种方法。

如果是用普通的CTS的方法,可以从下面几个方面着手。不太可能一次就把CTS做得很好,要反复调试各种参数,达到最佳效果。

1)合理的clock root和through pin。这个看似CTS会从SDC自动抓出来,但是并不一定是最好的,特别是多个clock相互有重叠的leaf pin时,要特别注意

2)不要用太大或者太小的clock buf/inv

3)选用RC最小的金属层。如果上面RC最小的金属层已经被占用,比如RC最小的top,top-1已经不够clock net时,而top-2到layer2都是一样的RC时,可以选用layer3/4。为什么不用更高层哪?因为这样既照顾了layer2/1的pin,有 不用太多的via到更高层

4)如果用double width clock wire,可以适当增大clock buf/inv的size

5)合理的max fanout。有时clock buf/inv的fanout可以超过max_fanout的限制

6)不要把skew设得太小

7)min_insertion_delay = 0ns

8)合理的transition time,不要太小

9)使用postCTS的CTS opt

10)做clock tree时,就直接把clock net走线完成


If giving total standard cell gate count, all memory macro list including memory type, bit width and depth, all other macro with real size, and IO type and total number. How do you estimate the die size?

如果告诉你标准单元的门数,所有内存的类型和逻辑大小,其他IP的实际大小,以及IO cell的种类和数量,你如何估算整个芯片的面积?

难度:3

答案:

IO neck 和 core neck 一般称作 IO limited 和 core limited,

IO limited :这个芯片的面积是因为IO个数限制(太多),而不得不做得那么大。core部分其实用不了那么大。这时面积计算就简化为每边IO个数的计算了。

Core limited:芯片面积是有core部分的决定的,IO没有那么多

在Core limited情况下,die size的估算如下:

芯片面积 = core面积+ power ring面积 +PAD ring面积

core面积 = RAM面积 + 其他macro面积 + 标准单元面积

RAM面积 = RAM 自身的面积 + RAM power ring面积 + keepout面积+ mbist面积

RAM自身的面积可以通过memory compiler或者查datasheet得到,

有些RAM 可以不要power ring。如果要的话,按照power mesh的宽度 x RAM的长宽 x 2 = 面积

keepout + mbist 的面积一般是RAM自身面积的10%

其他macro的面积,比如PLL,ADC,DAC等,直接把面积加起来,再留3~5%的keepout面积就好了

标准单元的面积=(预估的gate count x 每个gate的面积)/ utilization

utilization与使用的金属层数和设计的用途有关,简单地计算方法是

5层metal:50%

6层metal:60%

7层metal:70%

8层metal:80%

以上不包括power专用的金属层

如果设计是多媒体芯片,一般可以增加3~5% utilizaion,如果是网络芯片,则要减少3~5%


what is pros and cons of using buffer and invters in CTS?

CTS中使用buffer和inverter的优缺点是什么?

难度:3

答案:

使用BUF:

优点:逻辑简单,便于post-CTS对时钟树的修改

缺点:面积大,功耗大,insertion delay大

使用INV:

优点:面积小,功耗小,insertion delay小,对时钟duty cycle有利

缺点:不易做时钟树的修改


If giving two physical dies as below, and ask you select one of them. How do you pick it up? explain the reason please.

(1) width = 2 x height

(2) height = 2 x width

如果从下面的两个芯片中选一个给你做后端设计,你选哪个?请说明选择的理由?

(1) 宽 = 2倍的长

(2) 长 = 2倍的宽

难度:2

答案:

去除不太好用的layer(比如metal1)和power专用layer(比如RDL)后,比较剩下的layer可以提供的H和V的routing resource,如果H的多,就选宽的,反之,就选高的。


if the design is IO limited, how to reduce the die size?

因为IO太多而导致芯片面积过大,有什么方法减小面积?

难度:2

答案:

1)stagger IO,2重io 可以算一个方法

2)IO可以不全放到四边,只要封装没问题就行啦 -- flip chip 算第二个方法

3)如果有多套IOcell可以选择,尽量选瘦的

4)调整芯片的长宽比





 giving the schematic and delay in attached picture, calculate the WC setup slack at D pin of F2, and BC hold slack at D pin of F4

如图所示电路,时钟和延迟,计算到F2输入端D的setup slack,到F4输入端D的hold slack

难度:3

答案:

F2输入端D的setup slack是(8+0.5-0.3)-(0.7+7.0)=0.5

F4输入端D的hold slack是(0.2+0.2)-(0.2+0.2+0.1)=-0.1


using the same logic as question #17, considering OCV on clock path only, which clock buffer will be used for OCV derating calculation and which clock buffer will not (a.k.a. CPPR)?

如果考虑clock path的OCV,在第17题的电路里面,哪几个时钟BUF要被用来计算OCV的derating,哪几个不用(又叫CPPR)?暂不考虑X-talk产生的incremental delay

难度:2

答案:

C1 C2不用算入derating(应该是也计算过,但是会通过CRPR弥补),C3,C4,C5 要计算derating

附录:

以下是几个概念的通俗解释。

OCV:因为制造工艺的限制,同一芯片上不同位置的单元会有一点差异,这就是OCV。现在还有LOCV和AOCV,暂且不提。

derating:是计算OCV的一种简单方法,在某个单一条件下,比如WC或者BC,把指定path的延迟放大或者缩小一点,这个比率就是derating。注意,这里要强调的是某个单一条件,要么是WC,要么是BC,不能把WC和BC混在一起,再OCV,因为那样太悲观,实际上是很难发生的。

除了derating以外,在使用incremental SDF的时候,也会对OCV发生作用。这是明天的问题,比较有难度。

CPPR:一条path的start flop和end flop的时钟路径,有时会有一部分是重合的,重合的部分不应该算OCV(注意,这里假设没有使用incremental SDF),这就叫CPPR。



continue from question #18. Because there is CPPR, the OCV derating on clock path C1 and C2 are canceled. Now giving incremental delay caused by x-talk at net between C1 and C2. Please use the derating to calculate the difference of clock path delay from C1 to C2 (including the net between them) for WC setup and BC hold.

接上面#18的问题继续讨论,因为有CPPR,在C1到C2那段clock path上面的OCV被抵消掉了。现在我们增加一个由x-talk引起的incremental延迟在C1到C2的那段net上,具体数字见图。

问题:

对于C1到C2那段clock path,

在计算WC setup时,因为OCV引起的路径延迟的差是多少?

在计算BC hold时,因为OCV引起的路径延迟的差是多少?

注意:

问题是那段clock path因为OCV引起的path delay的差,不是问path delay的绝对值

难度:5

难度5的问题不是盖的吧,

好,改为选择题,

C1到C2一段的OCV延迟的差,

1)在计算WC setup时,是

a)0

b)0.0005

c)0.00075

d)0.0245

2)在计算BC hold时,是

a)0

b)0.001

c)0.0015

d)0.0265

答案:

现在从incremental SDF的格式说起,

(-0.01::0.015)(-0.015::0.01)

左边括弧里的是rising timing延迟,右边的是falling timing

括弧里面的一对数字表示在这个条件下(WC或者BC)延迟的最大和最小值

因为是incremental延迟,要和基本延迟结合使用,所以,会有负数出现。

再讲OCV的使用incremental SDF的方法,

OCV计算path delay时挑选最困难的情况,

在WC setup时,比如从F1到F2,

计算F1的clock path,就选incremental SDF里面的最大值0.015,

计算F2的clock path,就选最小值-0.01

因为有0.95 derating在-clock,-early上,所以F2的clock path要按比例缩小-0.01x0.95=-0.0095

所以C1到C2那段的OCV的差是0.015+0.0095=0.0245 (选项d)

在BC hold时,比如congF3到F4,因为2个FF在同一个时钟沿检测hold timing,

CPPR可以把incremental SDF的延迟也抵消掉,

所以C1到C2那段的OCV的差是0 (选项a)

结论:

计算setup时,CPPR不抵消incremental SDF

计算hold时,CPPR连incremental SDF都可以抵消掉


Explain ECO (Engineering Change Order) methodology.

说一下ECO的流程

难度:2

答案:

ECO有两种,pre-mask ECO和post-mask ECO,它的分界线就是base layer tape out之前和之后。

pre-mask ECO的流程是

1)后端写出网表,给前端

2)前端修改这个网表 (一般不再做综合),可以使用任何标准单元(只要不是dont_use),交给后端

3)后端读入ECO网表,和ECO之前的place和route

4)ECO place&route,STA, DRC/LVS

post-mask ECO流程,假设你不想动base layer

1)后端写出网表,给前端

2)前端修改这个网表 (一般不再做综合),只能使用spare cell或者象gate array一样的ECO cell

3)后端读入ECO网表,和ECO之前的place和route

4)如果使用spare cell,不用ECO place;如果用ECO cell,要将ECO cell放在以前带gate array功能的fill cell的位置上,再按照指定的layer做ECO route


What do you write in CTS spec file?

CTS spec 文件中一般包含哪些内容?

难度:3

答案:

(以Cadence CTS spec file 格式为例)

AutoCTSRootPin pad

Period

MaxDelay

MinDelay

MaxSkew

SinkMaxTran

BufMaxTran

Buffer

NoGating NO/YES

DetailReport YES/NO

#SetDPinAsSync NO/YES

SetIoPinAsSync YES/NO

RouteClkNet YES/NO

PostOpt YES/NO

OptAddBuffer YES/NO

#RouteType specialRoute

#LeafRouteType regularRoute

ExcludedPin

leafpin leafport

hroughpin throughport

clkgroup

macromodel pin


If there are too many pins of the logic cells in one place within core, what kind of issues would you face and how will you resolve?

如果在core里面某一块有太多的标准单元的pin,有可能出现什么place&route的问题,如何解决?

难度:3

答案:

1)禁止使用pin太多的cell

2)减小utilization,方法很多

3)看v h 可用资源,适当调整moudle 形状


If there are DRC (spacing,short), hold and setup violations in the design, you don't have enough time to fix all of them before tape out, which one you will fix first, which one you can leave it as is? Why?

如果设计中有DRC (特指spacing和short),hold和setup违反,tape out之前,你已经没有时间去修改所有这些违反,那么你首先修改哪个?哪个可以不管?请说明理由。

难度:2

答案:

1) short, spacing

2) hold

3) 如果没有时间,setup可以忽略


how to set multicycle path constraint?

如何设定multicycle path?

难度:1

提示:在一般情况下,multicycle -setup 和 -hold 要成对使用

答案:

clock domain:

fast-slow:set_multicycle_path num -setup -from clk1 -to clk2 -start

set_multicycle_path num-1 -hold -from clk1 -to clk2 -start

slow-fast:set_multicycle_paht num -setup -from clk2 -to clk1 -end

set_multicycle_path num-1 -hole -from clk2 -to clk1 -end

data path:

set_multicycle_path num -setup -from data1 -to data2

set_multicycle_path num-1 -hold -from data1 -to data2

延伸问题:

为什么-hold一般是-setup的n-1?如果只有-setup木有-hold会怎样?

答案:

hold 是对前后两个flip flop在相同时钟沿的检查.设了n-1就是返回n-1个周期做hold的检查,满足了两个flip flop在同一个时钟沿。如果没有-hold 默认是检查n前一个有效时钟沿,如果n>=2,hold的检查就不是在同一个时钟效沿,对hold的要求就要多n-1个周期,那样太苛刻了,一般时序无法收敛


how are timing constraints developed, such as clock, generated clock, IO timing, exception? What backend team contribute to it?

一个设计的时序约束是怎么写出来的?请大略说明时钟,IO delay,false path, multicycle path是如何得到的?在完成时序约束的过程中,后端可以给予什么样的帮助?

难度:2

答案:

clock和generated clock一般由设计spec决定。除非有些个别的local generated clock可以有前端工程师自己添加

IO timing与系统设计有关,应该参考/兼顾其他芯片的IO时序,由前端工程师作出

exception(false path, multicycle path)一般是由前端工程师在做设计时决定的

后端可以提供clock network delay/skew,DRV,以及帮助检查SDC是否合格


In regular backend flow with only one functional mode SDC, please explain timing closure methodology/issue/fixes in pre-CTS, post-CTS and post-Route stages.

在只有一个function SDC的普通后端流程中,对于pre-CTS, post-CTS 和 post-Route这三步,请分别讲述它们在时序收敛上的方法,一般会遇到的问题和解决方法。

难度:3

暂时不考虑DFT。后续的每日一题中,会加入DFT mode SDC。

答案:

pre-CTS时,使用ideal clock,只fix setup

post-CTS后,使用propagate clock,可以只fix setup,检查hold,但可以不fix hold

post-Route后,依然使用propagate clock,fix setup和hold

具体遇到的问题和解决方法:

pre-CTS: 如果有setup,重在调整floorplan,buffer tree结构

Post-CTS: 如果有setup,重在调整clock tree,buffer tree结构或者size

Post-Route: 如果有setup/hold,微调clock tree/buffer tree的size,routing channel和图层,实在不行,回到CTS


Continue from previous question, if adding one more DFT timing constraint, how do you handle the multiple SDC? Using Encounter or ICC commands, please explain the detail what you do.

继续#26的问题,如果再给一个DFT时序约束,在后端流程中,你如何处理多个SDC?假设使用Encounter或者ICC,请详细介绍如何设置

难度:3

答案:

简单地说就是使用MMMC。

在Encounter里面,要逐步定义,

create_library_set

create_op_cond

create_rc_corner

create_delay_corner

createPowerDomain

create_constraint_mode

create_analysis_view

set_default_view

set_timing_derate

对设计和SDC仔细分析后,也可以合并function SDC和几个DFT SDC,这个属于难度5的做法


There are function SDC with multiple clock domain and scan SDC with an individual scan clock. Assume those functional clock are un-balanced, how do you balance the scan clock?

假设一个设计的function SDC中有多个时钟,在scan mode下,另有一个单独的scan clock,如果functional的各个时钟树之间是不平衡的,请问如何平衡那个scan时钟?

难度:4

答案:

如果CTS支持multi-mode,直接使用即可。

如果不支持,或者MMCTS效果不理想,就是在CTS spec中,同时定义function 和 DFT 的时钟,然后在scan clock里面,把MUX设为leave pin,再让它们与function clok到MUX的延迟做动态平衡


There are function SDC, scan shift, scan capture, scan at-speed, mbist at-speed, and jtag SDC. Considering CPU run time, you can't add all of them into MMMC. Then which SDC you will add in to MMMC setup, and hold?

在一个设计中 有多个时序约束,象function,scan shift, scan capture, scan at-speed, mbist at-speed, 和 jtag SDC,为了减少运行时间,不能把它们都放入MMMC中,你选择哪些放入MMMC的setup中,哪些放入MMMC的hold中?

提示:选择的SDC要尽量的少,并且尽可能多地覆盖其他没有入选的SDC下的时序

难度:4

答案:

这个要从每个SDC的特点着手,个人经验,与设计有关,不敢保证使用与所有设计。

1) scan shift:速度很慢,不用太担心setup,但是hold很重要,一旦hold有问题,所有与scan有关的测试全泡汤

2) scan capture:也是慢速,但是会有很多hold出来,特别是在不同的function时钟之间

3) scan at-speed:高速,解决了它的setup,其他DFT的setup基本上就连带着解决了

4) mbist at-speed:高速,但是涉及的逻辑不多

5) jtag:慢速,很容易与function SDC合并

所有结论是

MMMC setup:function + scan at-speed

MMMC Hold: function(+jtag) + scan shift + scan capture


Explain SDF and SPEF back annotation timing correlation issue, especially in different STA tools

请解释反标SDF和SPEF在时序分析时的差异,特别是用不同的STA工具检查timing时

难度:3

答案:

使用SDF做时序分析,无论使用什么tools,其结果应该是一样的,没有差异

使用SPEF时,因为工具需要把SPEF换算成SDF,这时会产生差异。

所以建议使用一个你信得过的工具生成SDF,然后大家都使用这个SDF做STA和仿真

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,340评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,762评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,329评论 0 329
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,678评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,583评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,995评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,493评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,145评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,293评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,250评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,267评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,973评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,556评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,648评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,873评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,257评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,809评论 2 339

推荐阅读更多精彩内容